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}", (long)combinedText.length] options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 3:
regex = {2}\\s" options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 4:
case 5:
case 6:
case 7:
regex = {2}\\s\\d{%ld}", (long)combinedText.length - 3] options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 8:
regex = {2}\\s\\d{4}\\s" options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 9:
case 10:
case 11:
case 12:
regex = {2}\\s\\d{4}\\s\\d{%ld}$", (long)combinedText.length - 8] options:NSRegularExpressionCaseInsensitive error:&error];
break;
default:
return false;
}
if(error) return false;
NSUInteger numberOfMatches = ;
return numberOfMatches > 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]