我在Objective-C中寻找一种简单的方法,在字符串的每2个字符之间添加一个空格。所以“12345678”会变成“12 34 56 78”。NSString填充/ 2个字符之间的空格
其他方式,将字符串(一个128位长的字符串与所有数字)转换为每2个字符的数组。
有谁知道有什么可以帮助我吗?
谢谢。 - 伊莱
我在Objective-C中寻找一种简单的方法,在字符串的每2个字符之间添加一个空格。所以“12345678”会变成“12 34 56 78”。NSString填充/ 2个字符之间的空格
其他方式,将字符串(一个128位长的字符串与所有数字)转换为每2个字符的数组。
有谁知道有什么可以帮助我吗?
谢谢。 - 伊莱
试试这个:
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];
非常感谢你@Guru!它的工作原理! – 2013-02-23 09:24:18
这会调用未定义的行为。 ' - [NSString characterAtIndex:]'返回'unichar',格式说明符是'%C'而不是'%c'。 – 2013-02-23 11:06:25
感谢您的信息先生...它与%c也..一路畅快谢谢! – Guru 2013-02-23 11:12:21
试试这个:
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);
因为你似乎已经走到了一个解决方案,这只是另一个例子(在那个没有一个特别有效的一种)它是如何完成的。该版本正确处理奇数个字符;
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"
写作(或至少阅读和理解)这样的代码自己是很好的锻炼,如果你是一个初学者,也有做的许多方面,所以你可以尝试一些方法,看看有什么码你喜欢的风格。
一个NSMutableString和一个循环? – 2013-02-23 08:46:03
你能教我如何做到这一点?我是Objective-C的新手,谢谢! @JoachimIsaksson – 2013-02-23 08:51:40
@EliLien你必须自己做点努力。接受你从Joachim得到的提示并阅读“NSMutableString”的文档。这是**微不足道的**,只需要一些简单的算法思维。 – 2013-02-23 08:53:47