CPF和CNPJ的格式文本字段

时间:2012-07-27 18:36:34

标签: ios formatting

我应该如何在iOS中处理文本格式?我不是在谈论货币或十进制风格。由于iOS没有setFormat(),因此它很复杂。

我想要的两种格式示例:123.456.789-10123.456.789/1000-00

我的目标是在用户输入时格式化文本字段。像任何普通网站一样,例如,当您键入电话号码时。它不是来自模型或任何东西。用户只需输入数字,必要时我会插入".","/""-"

2 个答案:

答案 0 :(得分:4)

您可以使用正则表达式进行格式化,如下所示:

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:方法中使用。

答案 1 :(得分:1)

我几天前创建了自己的方法来检查有效的温度输入。这也有点痛苦,因为我必须检查: - 只有数字 - 只有一个小数点 - 如果有一个负号,它必须在前面

我最终使用[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