【问题标题】:NSString padding / space between charactersNSString 填充/字符之间的空格
【发布时间】:2012-06-19 02:35:51
【问题描述】:

我正在 Obj.C 中寻找一种简单的方法来在字符串的每个字符之间添加一个空格。所以“1234”看起来像“1 2 3 4”。

我在这里找到了一个完美的 javascript 示例:https://stackoverflow.com/a/7437422/949538

有谁知道 Obj.C 有类似的东西吗? Kerning 是 iOS 中的一个 PITA,这就是我最终所需要的......

想法/cmets?

谢谢! - 画了

【问题讨论】:

  • 您甚至可以将 javascript 转录为 Obj-C(这是基本的!)。你试过什么?

标签: objective-c ios nsstring padding kerning


【解决方案1】:

要正确执行此操作,考虑到 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];
}];

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 这看起来可行。只是一个想法;我相信您也可以在从string 字符串中添加对象后,将此行 - [buffer addObject:[NSString stringWithFormat:@" "] - 放在 for 循环中。
    • @qegal ya 我们可以使用它,但buffer 是 NSMutableArray 所以最后我们需要使用componentsJoinedByString,因为我们想要得到NSString
    • 这对于超过一个索引的字符(如许多汉字)会中断。它可能也中断了像 é 这样由 ´ 和 e 组成的字符。您最终可能会将“idé”变成“i d´ e”
    • 赫克托,我不相信我投了反对票,是吗?我希望不是,你做的很好。感谢大卫的提示。最终,这将只是一串数字,我将在上面使用它,而不是任何真实的字母或单词。
    【解决方案3】:

    这样做:

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

    【讨论】: