菜鸟教程小白 发表于 2022-12-11 19:34:27

ios - 输入的 Textfield.text 应具有特定格式


                                            <p><p>我有一个 <code>textfield</code>,我希望在其中输入以下格式的文本:
#### 1234
我知道这应该在 <code>textfield</code>.nut 的 <code>shouldChangeCharactersInRange</code> <strong>delegate</strong> 方法中完成我无法理解如何在每个字符上实现条件.请提出您的建议。提前致谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>有助于验证您的需求的表达式可能是:</p>

<pre><code>^{2}\s\d{4}\s\d{4}$
</code></pre>

<p>这里:</p>

<blockquote>
<ul>
<li><code>^</code>      - Shows start of string </li>
<li><code>{2}</code> - Shows any character between a-z exactly 2 times </li>
<li><code>\s</code>       - Shows white space character    one time. </li>
<li><code>\d{4}</code>    - Shows any digit from 0-9, exactly 4 times. </li>
<li><code>$</code>      - Shows end of string</li>
</ul>
</blockquote>

<p>一个解决方法的例子可能是这样,这里棘手的部分是允许正在构建的字符串:</p>

<pre><code>- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSError *error = NULL;
    NSRegularExpression *regex = nil;

   NSMutableString *combinedText = ;
    ;

    switch (combinedText.length) {
      case 1:
      case 2:
            regex = {%ld}&#34;, (long)combinedText.length] options:NSRegularExpressionCaseInsensitive error:&amp;error];
            break;
      case 3:
            regex = {2}\\s&#34; options:NSRegularExpressionCaseInsensitive error:&amp;error];
            break;
      case 4:
      case 5:
      case 6:
      case 7:
            regex = {2}\\s\\d{%ld}&#34;, (long)combinedText.length - 3] options:NSRegularExpressionCaseInsensitive error:&amp;error];
            break;
      case 8:
            regex = {2}\\s\\d{4}\\s&#34; options:NSRegularExpressionCaseInsensitive error:&amp;error];
            break;
      case 9:
      case 10:
      case 11:
      case 12:
            regex = {2}\\s\\d{4}\\s\\d{%ld}$&#34;, (long)combinedText.length - 8] options:NSRegularExpressionCaseInsensitive error:&amp;error];
            break;
      default:
            return false;
    }

    if(error) return false;      

    NSUInteger numberOfMatches = ;
    return numberOfMatches &gt; 0 || string.length == 0;
}
</code></pre>

<p>希望有帮助!</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 输入的 Textfield.text 应具有特定格式,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43625511/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43625511/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 输入的 Textfield.text 应具有特定格式