我应该如何处理 iOS 中的文本格式?我不是在谈论货币或小数样式。由于iOS没有setFormat()
,所以有点复杂。
我想要的格式的两个示例:123.456.789-10
和123.456.789/1000-00
.
我的目标是在用户键入时格式化文本字段。例如,当您键入电话号码时,就像任何普通网站一样。它不是来自模型或任何东西。用户只需要输入数字,必要时我会插入".","/"
or "-"
。
我应该如何处理 iOS 中的文本格式?我不是在谈论货币或小数样式。由于iOS没有setFormat()
,所以有点复杂。
我想要的格式的两个示例:123.456.789-10
和123.456.789/1000-00
.
我的目标是在用户键入时格式化文本字段。例如,当您键入电话号码时,就像任何普通网站一样。它不是来自模型或任何东西。用户只需要输入数字,必要时我会插入".","/"
or "-"
。
您可以使用正则表达式进行格式化,如下所示:
NSRegularExpression *fmt = [NSRegularExpression
regularExpressionWithPattern:@"(.{1,3})(.{1,3})(.{1,3})(.{1,2})"
options:0
error:NULL];
NSMutableString *str = [NSMutableString stringWithString:@"12345678910"];
[fmt replaceMatchesInString:str
options:0
range:NSMakeRange(0, str.length)
withTemplate:@"$1.$2.$3-$4"];
这将字符串转换为123.456.789-10
为了在用户键入时动态应用此格式,NSRegularExpression *fmt
请预先创建,将其存储在您的中,然后在您的方法UITextFieldDelegate
中使用它。textField:shouldChangeCharactersInRange:replacementString:
几天前我创建了自己的方法来检查有效的温度输入。这也有点痛苦,因为我必须检查: -只有数字 -只有一位小数 -如果有负号,它必须在前面
我最终使用[my string characterAtIndex:index];
并检查了每个字符,因为我不会超过 4 个字符。
编辑:
这是一些伪代码
for (every char in your string)
if(the index of the char % 3 == 2) //every third char, 0,2,5...
the char must be a . or / or -
else
the char must be a number