检查是否可以将字符串分成块?

时间:2014-06-09 16:42:52

标签: objective-c nsmutablearray

我有这个代码将NSString中存在的字符串分块为NSMutableArray:

NSString *string = @"one/two/tree";

NSMutableArray *parts = [[string componentsSeparatedByString:@"/"] mutableCopy];

NSLog(@"%@-%@-%@",parts[0],parts[1],parts[2]);

此命令工作正常但如果NSString不遵守此模式(字符串中没有符号' /'),应用程序将崩溃。

如何检查是否可以破坏NSString,防止应用程序崩溃?

2 个答案:

答案 0 :(得分:1)

只需检查parts.count,如果您的字符串中没有/(或只有一个),则您不会获得三个元素。

NSString *string = @"one/two/tree";

NSMutableArray *parts = [[string componentsSeparatedByString:@"/"] mutableCopy];

if(parts.count >= 3) {
    NSLog(@"%@-%@-%@",parts[0],parts[1],parts[2]);
}
else {
    NSLog(@"Not found");
}

来自文档:

  

如果list没有分隔符 - 例如" Karin" - 数组包含字符串本身,在这种情况下{@" Karin" }。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/componentsSeparatedByString

答案 1 :(得分:1)

你可能最好使用"对面"功能将它重新组合在一起......

NSString *string = @"one/two/three";

NSArray *parts = [string componentsSeparatedByString:@"/"];

NSString *newString = [parts componentsJoinedByString:@"-"];

// newString = @"one-two-three"

这将采用原始字符串。拆开它然后将它重新组合在一起,无论有多少部分。