从字符串中提取字符串,其范围介于特殊字符之间

时间:2015-08-13 15:01:13

标签: objective-c nsstring nsrange

我有一条路径,我正在以字符串的形式检索。我想将字符串分成两个不同的段,但我使用的方法给了我数组中的错误对象。

让我说我有路径:

/Country/State/ 

我正在检索它并尝试将这两个词分开:

    NSArray *tempArray = [serverArray valueForKey:@"Location"];

    NSArray *country;
    for (NSString *string in tempArray) {
       country = [string componentsSeparatedByString:@"/"];
        NSLog(@"%@", country);
    }

但是当我这样做时,我在记录它时会在数组中得到两个额外的对象:

2015-08-13 10:54:17.290 App Name[24124:0000000] (
"",
USA,
"NORTH DAKOTA",
""
)

如何获取没有特殊字符的第一个字符串,然后是第二个没有特殊字符的字符串?之后我打算使用NSScanner,但不确定是否有更有效的方式

1 个答案:

答案 0 :(得分:1)

这是因为有/字符的前导和尾随。

一个选项是对初始字符串进行子串,以删除前导和尾随/字符。

示例:

NSString *location = @"/Country/State/";
location = [location substringWithRange:NSMakeRange(1, location.length-2)];
NSArray *components = [location componentsSeparatedByString:@"/"];
NSLog(@"components[0]: %@, components[1]: %@", components[0], components[1]);
NSLog(@"components: %@", components);

输出:

components[0]: Country, components[1]: State

components: (
    Country,
    State
)

也不需要for循环。除非您知道原因并且需要它们,否则不要添加代码行。