从给定的字符串中分离字符串
Posted
技术标签:
【中文标题】从给定的字符串中分离字符串【英文标题】:Separate strings from given string 【发布时间】:2014-10-17 08:45:38 【问题描述】:NSString *str = @"Hello separate this and also this also separate this world"
我需要在数组中输出:
你好 : 在数组中的索引 0
分开:在数组中的索引 1
还有这个:在数组中的索引 2
也分开这个:在数组中的索引 3
世界:在数组中的索引 4
【问题讨论】:
使用NSString
方法 [str stringByReplacingOccurrencesOfString:<#(NSString *)#> withString:<#(NSString *)#>]
和 [str componentsSeparatedByString:<#(NSString *)#>]
来实现这一点。
非常感谢.....
【参考方案1】:
以下代码将为您提供问题中指定的结果。
注意!!! - 此代码仅适用于您的问题 和
中提到的静态符号组合。如果对该组合进行任何更改,那么您将不会获得预期的结果。
NSString *str = @"Hello sepearte this and also this also seperate this world";
str = [str stringByReplacingOccurrencesOfString:@" " withString:@"#"];
str = [str stringByReplacingOccurrencesOfString:@" " withString:@"#"];
NSArray *components = [str componentsSeparatedByString:@"#"];
【讨论】:
【参考方案2】:NSString *str = @"Hello group1 group1 group1 and also this group2 group2 group2 world";
NSString *pattern = @"^Hello (.+) and also this (.+) world$";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
options:NSRegularExpressionSearch
error:nil];
NSArray *matches = [regex matchesInString:str
options:0
range:NSMakeRange(0, [str length])];
if ([matches count] == 2)
NSString *group1 = [str substringWithRange:[matches[0] range]];
NSString *group2 = [str substringWithRange:[matches[1] range]];
else
NSLog(@"Match failed");
【讨论】:
【参考方案3】:假设您的字符串格式正确,即没有任何不平衡的大括号,您可以在大括号上拆分:
NSArray<NSString *> *components = [[str stringByReplacingOccurrencesOfString:@"" withString:@""] componentsSeparatedByString:@""];
然后最终修剪得到的字符串:
NSMutableArray<NSString *> *trimmedComponents = [NSMutableArray array];
for (NSString *component in components)
[trimmedComponents addObject:[component stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]];
【讨论】:
以上是关于从给定的字符串中分离字符串的主要内容,如果未能解决你的问题,请参考以下文章