【问题标题】:NSString padding / space between 2 charactersNSString 填充/两个字符之间的空格
【发布时间】:2013-02-23 08:38:20
【问题描述】:

我正在 Objective-C 中寻找一种简单的方法来在字符串的每 2 个字符之间添加一个空格。所以“12345678”看起来像“12 34 56 78”。

其他方式,将字符串(包含所有数字的 128 位长字符串)转换为每 2 个字符的数组。

有人知道什么可以帮助我吗?

谢谢。 - 伊莱

【问题讨论】:

  • 一个 NSMutableString 和一个循环?
  • 你能教我如何做到这一点吗?我是Objective-C的新手,谢谢! @JoachimIsaksson
  • @EliLien 你必须自己努力。接受你从 Joachim 那里得到的提示,并阅读NSMutableString 的文档。这是微不足道的,只需要一些简单的算法思考。
  • 好的,非常感谢,我试试! ;-) @H2CO3

标签: ios objective-c macos nsstring nsarray


【解决方案1】:

试试这个:

    NSString *str = @"12345678";
    NSMutableString *tempStr = [[NSMutableString alloc] init];

    for (int position=0; position < str.length; position++) {

        if(position%2==0)
        {
            [tempStr appendString:[NSString  stringWithFormat:@"%c",[str characterAtIndex:position]]];
        }
        else
        {
            [tempStr appendString:[NSString  stringWithFormat:@"%c",[str characterAtIndex:position]]];

            NSLog(@"%@\n",tempStr);
            [tempStr setString:@""];
        }
    }
    [tempStr release];

【讨论】:

  • 这会调用未定义的行为。 - [NSString characterAtIndex:] 返回格式说明符为 %C 而不是 %cunichar
  • 感谢您提供的信息先生...它也与 %c 合作...无论如何谢谢!
【解决方案2】:

试试这个:

NSString *str = @"12345678";
NSMutableString* mStr= [NSMutableString string];
for(NSUInteger i=0 ; i<str.length; i++)
{
    [mStr appendString: [str substringWithRange: NSMakeRange(i,1)]];
    if(i%2 && i!=0)
    {
        [mStr appendString: @" "];
    }
}
NSLog(@"%@",mStr);

【讨论】:

    【解决方案3】:

    既然您似乎已经找到了解决方案,这只是另一个示例(并不是一个特别有效的示例)如何完成它。此版本正确处理奇数个字符;

    NSString *original = @"192190129";
    NSMutableString *result = [NSMutableString stringWithCapacity:2*original.length];
    
    for (int pos=0; pos < original.length; pos++) {
    
        NSString *formatToAppend = (pos && !(pos & 1)) ? @" %C" : @"%C";
        [result appendString:[NSString stringWithFormat:formatToAppend,
            [original characterAtIndex:pos]]];
    
    }
    
    >>> "19 21 90 12 9"
    

    如果您是初学者,自己编写(或至少阅读和理解)这样的代码是非常好的培训,并且有很多方法可以做到这一点,因此您可以尝试几种方法来查看您喜欢的代码风格。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多