2011-12-21 63 views
-1

我需要在字符串中每4個字符後添加空格。例如,如果字符串是aaaaaaaa,我需要將其格式設置爲aaaa aaaa。我嘗試了下面的代碼,但它不適合我。在iPhone中格式化字符串

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

首先找到你的字符串的長度。把你的字符串放到for循環中,並使條件acc。每4個字符後應該有一個空格。簡單。 – Sarah 2011-12-21 10:06:02

回答

0

我發現了格式的字符串到一個電話號碼的格式如下,但它看起來像你可以很容易地改變它以支持其他格式

Telephone number string formatting

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; 
+0

請記住,這隻適用於原始字符串長度爲4的倍數。 – 2011-12-21 10:25:11

+0

修復和修改答案 – SentineL 2011-12-21 10:30:30

1

你還沒有說什麼ISN沒有處理你的代碼,所以很難確切地知道要回答什麼。作爲一個提示 - 在未來的問題不只是說「它無法正常工作」,而是說明什麼不起作用,以及它不起作用。然而...

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是aaaaaaaaaaaaaaaa 第一次進入你的循環,你會得到的第四位,在i = 4的

AAAA AAAAAAAAAAAA

現在,下一次插入空格你插入空格,我會8.但在你currentFormattedString第8位是不是你認爲這將是

AAAA AAA AAAAAAAAA

下一次,這將是另外4個字符沿着這仍然不是你想

AAAA AAA AA AAAAAAA

等等

你必須考慮到插入的空間,這將影響偏移值。

0

尼克布爾回答了你的方法爲什麼打破了原因。
恕我直言,適當的解決方案是使用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 
}