从给定的字符串中分离字符串

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]]];

【讨论】:

以上是关于从给定的字符串中分离字符串的主要内容,如果未能解决你的问题,请参考以下文章

从一个数组元素中分离两个字符串

如何从共享内存中分离字符串数组? C

如何从查询字符串中分离“选择顶部 * x”?

熊猫在月日时间后从其余字符串中分离出来

从元素中分离多行文本

从字符串中分离文件路径文件名及拓展