2012-06-16 29 views
6

Tôi đang tìm kiếm một cách dễ dàng trong Obj.C để thêm khoảng cách giữa mỗi ký tự trong chuỗi của tôi. Vì vậy, "1234" sẽ xuất hiện giống như "1 2 3 4".NSString đệm/không gian giữa các ký tự

Tôi đã tìm thấy một ví dụ hoàn hảo javascript đây: https://stackoverflow.com/a/7437422/949538

Có ai biết một cái gì đó tương tự cho Obj.C? Kerning là một PITA trong iOS, và điều này cuối cùng là tất cả những gì tôi cần ...

Suy nghĩ/nhận xét?

Cảm ơn! - Drew

+0

Bạn thậm chí có thể chỉ ghi lại javascript vào Obj-C (đây là cơ bản!). Bạn đã thử cái gì? – Vervious

Trả lời

4

Hãy thử này:

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

Có vẻ như nó hoạt động. Chỉ là một ý nghĩ; Tôi tin rằng bạn cũng có thể đặt dòng này - '[buffer addObject: [NSString stringWithFormat: @" "]' - trong vòng lặp for sau khi bạn thêm đối tượng từ chuỗi 'string'. – pasawaya

+0

@qegal ya chúng ta có thể sử dụng nhưng 'buffer' là NSMutableArray nên cuối cùng chúng ta cần sử dụng' componentsJoinedByString' vì chúng ta muốn có 'NSString' – Hector

+0

Fantastic. Làm việc hoàn hảo, cảm ơn bạn! – Drew

0

Làm điều này:

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

Để làm điều này một cách chính xác, có tính đến những vấn đề nêu trong bình luận của David Rönnqvist của, làm một cái gì đó như thế này:

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]; 
}];