2012-06-16 92 views
6

我正在尋找一種簡單的方法在Obj.C中爲我的字符串的每個字符之間添加一個空格。所以「1234」會變成「1 2 3 4」。NSString填充/字符之間的空格

我已經在這裏找到一個完美的JavaScript示例:https://stackoverflow.com/a/7437422/949538

有誰知道爲Obj.C類似的東西? Kerning是iOS中的PITA,並且這終究是我所需要的...

想法/評論?

謝謝! - 德魯

+0

你甚至可以將JavaScript轉錄成Obj-C(這是基本的!)。你有什麼嘗試? – Vervious

回答

4

試試這個:

NSString *string =[NSString stringWithString:@"1234"]; 
NSMutableArray *buffer = [NSMutableArray arrayWithCapacity:[string length]]; 
for (int i = 0; i < [string length]; i++) { 
    [buffer addObject:[NSString stringWithFormat:@"%C", [string characterAtIndex:i]]]; 
} 
NSString *final_string = [buffer componentsJoinedByString:@" "]; 
+0

看起來像是有效的。只是一個想法;我相信你也可以在你從'string'字符串中添加對象後,在for循環中加入這一行 - [buffer addObject:[NSString stringWithFormat:@「」]' - 。 – pasawaya

+0

@qegal ya我們可以使用它,但'buffer'是NSMutableArray,所以最後我們需要使用'componentsJoinedByString',因爲我們想要獲得'NSString'神奇的 – Hector

+0

。工作完美,謝謝! – Drew

0

這樣做:

NSString *string =[NSString stringWithString:@"1234"]; 

    NSMutableString *spacedString= [NSMutableString stringWithString:[NSString stringWithFormat:@"%C",[string characterAtIndex:0]]]; 

    for(int i = 1; i<[string length];i++) 
    { 
     [spacedString appendString:[NSString stringWithFormat:@" %C",[string characterAtIndex:i]]]; 
    } 
9

爲了正確地做到這一點,考慮到大衛Rönnqvist的評論中提到的問題,做這樣的事情:

NSMutableString* result = [origString mutableCopy]; 
[result enumerateSubstringsInRange:NSMakeRange(0, [result length]) 
          options:NSStringEnumerationByComposedCharacterSequences | NSStringEnumerationSubstringNotRequired 
         usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop){ 
    if (substringRange.location > 0) 
     [result insertString:@" " atIndex:substringRange.location]; 
}];