如何通过字符串中的每个字符来分割NSString?
问题描述:
我有以下的代码,它可以像我期望的那样工作。我想知道是否有一种公认的Cocoa方法将字符串中的每个字符作为数组中的一个对象拆分为一个数组?如何通过字符串中的每个字符来分割NSString?
- (NSString *)doStuffWithString:(NSString *)string {
NSMutableArray *stringBuffer = [NSMutableArray arrayWithCapacity:[string length]];
for (int i = 0; i < [string length]; i++) {
[stringBuffer addObject:[NSString stringWithFormat:@"%C", [string characterAtIndex:i]]];
}
// doing stuff with the array
return [stringBuffer componentsJoinedByString:@""];
}
答
由于字符串已经是一个字符数组,似乎......冗余。
+0
是的,我非常想要一个数组,我将所有的注意力放在如何创建数组上。我想要做的是对字符串进行一些排列,在不创建数组的情况下,我可以轻松地在NSMutableString上执行该排列。感谢您让我走上正轨。 – 2010-03-18 10:55:24
答
如果你确实需要NSString
的NSArray
个字符,我认为你创建它的方法是可以的。
但似乎有问题的是,您的目的不能以更具可读性,安全性(和性能优化)的方式完成。有一件事情对我来说尤其危险:将字符串拆分为unicode字符(大多数情况下)不会达到您所期望的。有多个由多个unicode代码点组成的字符。并且有unicode代码点实际上不止一个字符。除非你知道这些(或者可以保证你的输入不包含任意字符串),否则你不应该在字符级别上使用unicode字符串。
我知道你可以使用分隔符将NSString拆分为数组。也许你可以使用“”作为分隔符。只是猜测: 'stringBuffer = [string componentsSeparatedByString:@“”];' – 2010-03-18 10:46:01
@wic:返回一个元素的数组:原始字符串。 – 2010-03-18 11:14:40
@Nik:数字。也许正则表达式分割使用'/./'。尽管我认为Cocoa缺乏正则表达式支持。 – 2010-03-18 11:53:23