2014-06-09 64 views
0

我有這樣的代碼誰豆腐塊現有一的NSString內成爲NSMutableArray的一個字符串:檢查是否有可能將字符串分解爲塊?

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

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

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

這個命令的作品完美,但如果NSString的不服從這種模式(沒有字符串內的符號「/」) ,該應用程序將崩潰。

我該如何檢查是否可以打破NSString,防止應用程序不會崩潰?

+1

檢查部件是否爲零或者如果該部件數量爲零,那麼數組未被創建,或者至少沒有數據以「/」分隔。 – KDeogharkar

+1

如果沒有字符串的實例,我不認爲這會崩潰。它只是返回原始字符串。 – Fogmeister

回答

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"); 
} 

從文檔:

如果列表中沒有分隔符,例如,「卡琳」組成的數組包含字符串本身,在這種情況下{@「卡琳」}。

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

+0

感謝您的幫助,+ 1爲您的帖子,+ 1爲我的大腦:) – user3613119

1

你可能會更好使用「相反」功能,把它重新走到一起......

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

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

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

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

這將需要原始字符串。無論有多少零件,將其拆分,然後重新組合在一起。

+0

感謝您的幫助,+1爲您的帖子,+1爲我的大腦:) – user3613119