【问题标题】:How to split an NSString into multiple NSStrings [duplicate]如何将 NSString 拆分为多个 NSString [重复]
【发布时间】:2014-05-18 07:50:20
【问题描述】:

我正在尝试将 NSString 拆分为多个 NSString。 NSString 中的每个字符对应一个新字符串。有没有比手动操作更简单的方法?可以自动执行此操作的方法或 API?

比如转这个字符串:

_line1 = [NSString stringWithFormat:@"start"];

进入:

_string1 = [NSString stringWithFormat:@"s"];
_string2 = [NSString stringWithFormat:@"t"];
_string3 = [NSString stringWithFormat:@"a"];
_string4 = [NSString stringWithFormat:@"r"];
_string5 = [NSString stringWithFormat:@"t"];

【问题讨论】:

标签: objective-c nsstring uikit


【解决方案1】:

首先,你为什么使用_line1?你永远不应该通过它们的指针直接访问属性。请改用self.line1。我假设你的类定义中有@property NSString *line1;。如果没有,您需要根据需要调整我发布的代码。

其次,没有办法内置。但是手动操作很简单:

NSMutableArray *chars = [NSMutableArray array];
NSUinteger i = 0;
for (i = 0; i < self.line1.length; i++) {
  [chars addObject:[self.line1 substringWithRange:NSMakeRange(i, 1)]];
}

【讨论】:

  • 直接访问属性绝对有正当理由。这不是其中之一,但我不会说“从不”。
【解决方案2】:

那里的文档非常好。有很多方法可以做到这一点。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html

一种方法是创建一个包含每个字符的NSStrings 数组。

NSString * line1 = @"start";
NSMutableArray * characters = [NSMutableArray array];

for(int i = 0; i < line1.length; i++) {
    NSString * character = [line1.substringWithRange:NSMakeRange(i, 1)];
    [characters addObject:character];
}

// Then loop over characters array ... 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多