我有这个代码将NSString中存在的字符串分块为NSMutableArray:
NSString *string = @"one/two/tree";
NSMutableArray *parts = [[string componentsSeparatedByString:@"/"] mutableCopy];
NSLog(@"%@-%@-%@",parts[0],parts[1],parts[2]);
此命令工作正常但如果NSString不遵守此模式(字符串中没有符号' /'),应用程序将崩溃。
如何检查是否可以破坏NSString,防止应用程序崩溃?
答案 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" }。
答案 1 :(得分:1)
你可能最好使用"对面"功能将它重新组合在一起......
NSString *string = @"one/two/three";
NSArray *parts = [string componentsSeparatedByString:@"/"];
NSString *newString = [parts componentsJoinedByString:@"-"];
// newString = @"one-two-three"
这将采用原始字符串。拆开它然后将它重新组合在一起,无论有多少部分。