Objective C - 将字符串拆分为数组

时间:2014-06-30 20:03:18

标签: objective-c cocoa-touch

我该怎么做?我是Objective-C的新手,但我无法找到任何可以帮助我做到这一点的事情。

NSArray *splitLine = [currentLine componentsSeparatedByString:@":%@",notNumber];

其中notNumber是一个字符串,表示任何不是数字的字符串。所以我想分隔一个字符串,其中冒号用不是数字的字符串分隔。 (我希望避免有时分割3:00pm,但要分割为DESCRIPTION:LOCATION:等iCal参数。)

3 个答案:

答案 0 :(得分:1)

您可以通过几个步骤执行此操作,例如此操作。我没有编译这段代码,但它至少应该让你知道该怎么做。

1)创建一个正则表达式对象以匹配您的分隔符:

NSString *regexString = @"DESCRIPTION:\s|LOCATION:\s"; // or whatever makes sense for your scenario
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:regexString
                                          options:NSRegularExpressionCaseInsensitive
                                            error:nil];

2)用一个分隔符替换所有与正则表达式匹配的不同分隔符:

NSRange range = NSMakeRange(0, string.length);
NSString *string2 = [regex stringByReplacingMatchesInString:string
                                                     options:0
                                                       range:range
                                                withTemplate:@"SEPARATOR"];

3)拆分字符串!

NSArray *elements = [string2 componentsSeparatedByString:@"SEPARATOR"];

答案 1 :(得分:1)

分裂字符串的最短解决方案。

NSString *str = @"Please split me to form array of words"; 
NSArray *wordsArray  = [str componentsSeparatedByString:@" "];

答案 2 :(得分:0)

您可以使用正则表达式!

使用模式(我相信这是你问题的核心):

pattern = @"(?<=[^0-9]):(?=[^0-9])"

此模式仅匹配&#39;:&#39;不被数字包围的符号。

然后替换为不会在数据中显示的虚拟值

dummy = @"NEVERSEETHIS"

NSRegularExpressions *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];
NSRange range = NSMakeRange(0, [string length])
NSString *modified= [regex replaceMatchesInString:yourString options:0 range:range withTemplate:dummy];

最后,拆分

return [modified componentsSeparatedByString:dummy];