你如何将NSString分成组件?

时间:2010-10-15 12:37:27

标签: iphone objective-c xcode nsstring

在Xcode中,如果我有一个包含数字的NSString,即@“12345”,我该如何将其拆分为表示组成部分的数组,即“1”,“2”,“3”, “4”,“5”...... componentsSeparatedByString对象上有NSString,但在这种情况下没有分隔符......

5 个答案:

答案 0 :(得分:24)

NSString有一个现成的成员函数来执行此操作:

NSString* foo = @"safgafsfhsdhdfs/gfdgdsgsdg/gdfsgsdgsd";
NSArray* stringComponents = [foo componentsSeparatedByString:@"/"];

答案 1 :(得分:4)

看起来好像characterAtIndex:可以做到这一点,但是会返回一个unichar,它不是NSObject派生的数据类型,所以不能直接放入数组中。你需要用每个unichar构造一个新的字符串。

更简单的解决方案是使用substringWithRange:和1个字符的范围。通过简单的for (int i=0;i<[myString length];i++)循环运行您的字符串,将每个1个字符的范围添加到NSMutableArray

答案 2 :(得分:1)

NSString已经 是其组件的数组,如果按组件表示单个字符。使用[string length]获取字符串的长度,使用[string characterAtIndex:]获取字符。

如果您确实需要一个只包含一个字符的字符串对象数组,则必须自己创建该数组。使用for循环遍历字符串中的字符,使用[NSString stringWithFormat:]创建一个包含单个字符的新字符串,并将其添加到数组中。但这通常没有必要。

答案 3 :(得分:1)

在您的情况下,由于您没有分隔符,您必须通过

获得单独的字符
- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange

或者这个

- (unichar)characterAtIndex:(NSUInteger) index inside a loop.

这是我目前看到的唯一方式。

答案 4 :(得分:0)

不知道这是否适用于您想要做的事情,但是:

const char *foo = [myString UTF8String]
char third_character = foo[2];

请务必阅读UTF8String上的文档