2011-03-28 283 views
2

我有这样如何拆分字符串?

NSString *first = ..; 
NSString *second = ..; 
NSString *third = ..; 

NSString joinedString; 
joinedString = [NSString stringWithFormat:@"%@ - %@ (%@)", first, second, third]; 

现在我需要从joinedString找回三个原始字符串由三根弦的字符串。我读过一些我应该使用NSScanner的地方。任何想法如何可能工作?

回答

3

鉴于你在你的问题中提供的例子,你可以做到以下几点:

// characters we are going to split at 
NSString *sep = @" -()"; 
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:sep]; 
NSArray *strings = [joinedString componentsSeparatedByCharactersInSet:set]; 

// This is the simple way provided that the strings doesn't have spaces in them. 

我会用NSScanner与具有可变信息和你想找到在草堆该针头大的字符串。

+0

'componentsSeparatedByString'不起作用。检查文档。 – 2011-03-28 12:41:52

+0

谢谢,我已更正我的代码。 – 2011-03-28 12:46:21

+0

谢谢,完美的工作! – Lorenzo 2011-03-28 16:07:28

1

如果您在您的文章,您可以使用NSRegularExpression(iOS 4以上)提到得到了确切的模式:

NSString *regexStr = @"(.*)\s-\s(.*)\s\((.*)\)"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:0 error:nil]; 
NSArray *results = [regex matchesInString:joinedString options:0 range:NSMakeRange(0, [joinedString length])]; 
NSString *string1 = [results objectAtIndex:0]; 
... 

(没有错误处理和无法验证它现在)

1

你可以使用componentsSeparatedByCharactersInSet:

NSString *chars = @"-()"; 
NSArray *split = [joinedString componentsSeparatedByCharactersInSet:[NSCharacterset characterSetWithCharactersInString:chars]]; 

然后,您可以修剪开始/结束空间:

stringFromArray = [stringFromArray stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];