NSString填充/字符间的空格

6
我想要在 Obj.C 中找到一种简单的方法,使我的字符串每个字符之间都添加一个空格。 因此,"1234" 会变成 "1 2 3 4"。
我在这里找到了一个完美的 JavaScript 示例:https://dev59.com/X2s05IYBdhLWcg3wG-VR#7437422
有人知道类似 Obj.C 的东西吗?Kerning 在 iOS 上很麻烦,但这最终就是我需要的...
你们有什么想法或评论吗?
谢谢! - Drew

你甚至可以将JavaScript直接转录成Obj-C(这很基础!)。你尝试过什么? - Vervious
3个回答

9
为了正确完成此操作,考虑到David 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];
}];

5
尝试这个:

试一试:

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:@" "];

看起来好像可以工作。只是一个想法;我相信你也可以把这一行 - [buffer addObject:[NSString stringWithFormat:@" "] - 放在循环中,在从 string 字符串添加对象之后。 - pasawaya
@qegal 可以使用那个,但是 buffer 是 NSMutableArray,所以最后我们需要使用 componentsJoinedByString 因为我们想要得到 NSString - Hector
1
这段代码对于多个索引的字符(例如许多汉字)会出现错误。对于像é这样由´和e组成的字符,它也可能会出现错误。你最终可能会得到"idé"变成"i d ´ e"的结果。 - David Rönnqvist
1
Hector,我不相信我给了负评,是吗?希望不是,你的方法很好。感谢你的提示David。最终,我将只使用一串数字而不是任何真正的字母或单词。 - 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]]];
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接