【问题标题】:How do you split NSString into component parts?如何将 NSString 拆分为组件?
【发布时间】:2010-10-15 12:37:27
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c xcode nsstring


    【解决方案1】:

    有一个现成的 NSString 成员函数可以做到这一点:

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

    【讨论】:

      【解决方案2】:

      看起来characterAtIndex: 可以解决问题,但它返回一个unichar,它不是NSObject 派生的数据类型,因此不能直接放入数组中。您需要为每个 unichar 构造一个新字符串。

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

      【讨论】:

      • 效果很好,非常感谢您的快速回复:-)
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        或者这个

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

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

        【讨论】:

          【解决方案5】:

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

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

          请务必阅读有关 UTF8String 的文档

          【讨论】:

            猜你喜欢
            • 2019-11-18
            • 1970-01-01
            • 2014-05-18
            • 1970-01-01
            • 2011-04-18
            • 2012-02-27
            • 1970-01-01
            • 2023-03-31
            • 1970-01-01
            相关资源
            最近更新 更多