在IPhone中格式化字符串

时间:2011-12-21 10:04:08

标签: iphone nsstring

我需要在字符串中每4个字符后添加空格。例如,如果字符串是aaaaaaaa,我需要将其格式化为aaaa aaaa。我尝试了以下代码,但它对我不起作用。

NSMutableString *currentFormattedString = [[NSMutableString alloc] initWithString:formattedString];

   int count = [formattedString length];

    for (int i = 0; i<count; i++) {
        if ( i %4 == 0) {
            [currentFormattedString insertString:@" " atIndex:i];

        }

    }

任何人都可以帮我吗?

4 个答案:

答案 0 :(得分:1)

 NSString *text = [[NSString alloc] initWithString:@"aaaaaaaa"];
    NSString *result = [[NSString alloc] init];
    double count = text.length/4;
    if (count>1) {
    for (int i = 0; i<count; i++) {
        result = [NSString stringWithFormat:@"%@%@ ",result,[text substringWithRange:NSMakeRange(i*4, 4)]];
    }
    result = [NSString stringWithFormat:@"%@%@ ",result,[text substringWithRange:NSMakeRange(((int)count)*4, text.length-((int)count)*4)]];
    }
    else  result = text;

答案 1 :(得分:1)

您还没有说过什么不能使用您的代码,因此很难确切地知道要回答什么。作为提示 - 将来问题不只是说“它不起作用”,而是说什么不起作用,它如何不起作用。然而...

NSMutableString *currentFormattedString = [[NSMutableString alloc] initWithString:formattedString];

int count = [formattedString length];


for (int i = 0; i<count; i++) {
    if ( i %4 == 0) {
        [currentFormattedString insertString:@" " atIndex:i];

    }

}

您正在插入空格,但您不会在索引值中考虑这​​一点。所以,假设您的formattedString是aaaaaaaaaaaaaaa 第一次通过循环,您将到达第4个位置并在i = 4

处插入一个空格

aaaa aaaaaaaaaaaa

现在下次你插入一个空格时,我将是8.但是你的currentFormattedString中的第8个位置不是你想象的那个

aaaa aaa aaaaaaaaa

下次将是另外4个字符,但仍然没有你想到的地方

aaaa aaa aa aaaaaaa

等等

您必须考虑将影响偏移值的插入空间。

答案 2 :(得分:0)

我发现以下内容将字符串格式化为电话号码格式,但看起来您可以轻松更改它以支持其他格式

Telephone number string formatting

答案 3 :(得分:0)

Nick Bull回答了你的方法已经破裂的原因 恕我直言,适当的解决方案是使用while循环并自行循环增量。

NSInteger i = 4; // first @" " should be inserted after the 4th (index = 3) char
while (i < count) {
    [currentFormattedString insertString:@" " atIndex:i];
    count ++; // you did insert @" " so the length of the string increased
    i += 5; // you now must skip 5 (" 1234") characters
}