【发布时间】:2010-10-15 12:37:27
【问题描述】:
在Xcode中,如果我有一个包含数字的NSString,即@"12345",我如何将它拆分成一个表示组成部分的数组,即"1"、"2"、"3"、"4 ", "5"...NSString 对象上有一个componentsSeparatedByString,但是在这种情况下没有分隔符...
【问题讨论】:
标签: iphone objective-c xcode nsstring
在Xcode中,如果我有一个包含数字的NSString,即@"12345",我如何将它拆分成一个表示组成部分的数组,即"1"、"2"、"3"、"4 ", "5"...NSString 对象上有一个componentsSeparatedByString,但是在这种情况下没有分隔符...
【问题讨论】:
标签: iphone objective-c xcode nsstring
有一个现成的 NSString 成员函数可以做到这一点:
NSString* foo = @"safgafsfhsdhdfs/gfdgdsgsdg/gdfsgsdgsd";
NSArray* stringComponents = [foo componentsSeparatedByString:@"/"];
【讨论】:
看起来characterAtIndex: 可以解决问题,但它返回一个unichar,它不是NSObject 派生的数据类型,因此不能直接放入数组中。您需要为每个 unichar 构造一个新字符串。
一个更简单的解决方案是将substringWithRange: 与1 个字符的范围一起使用。通过一个简单的 for (int i=0;i<[myString length];i++) 循环运行您的字符串,将每个 1 字符范围添加到 NSMutableArray。
【讨论】:
NSString 已经 是它的组件的数组,如果组件是指单个字符。使用[string length] 获取字符串的长度,使用[string characterAtIndex:] 获取字符。
如果您真的需要一个只有一个字符的字符串对象数组,您将不得不自己创建该数组。使用for 循环遍历字符串中的字符,使用[NSString stringWithFormat:] 创建一个包含单个字符的新字符串,并将其添加到您的数组中。但这通常不是必需的。
【讨论】:
在您的情况下,由于您没有分隔符,因此您必须通过
获取单独的字符- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
或者这个
- (unichar)characterAtIndex:(NSUInteger) index inside a loop.
这是我目前看到的唯一方式。
【讨论】:
不知道这是否适用于您想做的事情,但是:
const char *foo = [myString UTF8String]
char third_character = foo[2];
请务必阅读有关 UTF8String 的文档
【讨论】: