我需要在字符串中每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];
}
}
任何人都可以帮我吗?
答案 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)
我发现以下内容将字符串格式化为电话号码格式,但看起来您可以轻松更改它以支持其他格式
答案 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
}