我该如何分离这个NSString?

时间:2013-10-03 14:51:23

标签: ios objective-c nsstring nsarray

因为我无法获得将解析后的字符串

分开的逻辑
  

tooltipHtml:“(26.3 km / 29分钟)”

我想删除除“ 26.3 km ”之外的其他部分& ' 29分钟'。有时候不是“分钟”而是“ hrs- mins

3 个答案:

答案 0 :(得分:2)

使用NSString componentsSeparatedByString:方法将它们沿“(”,“/”和“)”

分开
NSArray *components = [myString componentsSeparatedByString: @"("];
NSArray *componentsTwo = [[components objectAtIndex:1] componentsSeparatedByString: @"/"];
NSString *firstString = [componentsTwo objectAtIndex:0];
NSArray *componentsThree = [componentsTwo objectAtIndex:1] componentsSeparatedByString: @")"];
NSString *secondString = [componentsThree objectAtIndex:0];

或者你可以使用正则表达式方法,但是我对它们并不熟悉,所以我不能告诉你如何做到这一点,你必须环顾四周。

答案 1 :(得分:0)

如果你想使用RegEx,你可以这样做:

NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:@"(?<=[(])[^)]*" options:nil error:nil];
NSArray *matches = [regEx matchesInString:str options:Nil range:NSMakeRange(0, str.length)];
for (NSTextCheckingResult *r in matches) {
    NSLog(@"%@", [str substringWithRange:r.range]);
}

输出:26.3 km / 29分钟

或者,如果您希望将它们分开进一步使用:

NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:@"(?<=[(|/])[^)|/]*" options:nil error:nil];
NSArray *matches = [regEx matchesInString:str options:Nil range:NSMakeRange(0, str.length)];
for (NSTextCheckingResult *r in matches) {
    NSLog(@"%@", [str substringWithRange:r.range]);
}

输出: 26.3公里 29分钟

答案 2 :(得分:-1)

NSString *newString =[@"tooltipHtml:\" (26.3 km / 29 mins)\"" stringByReplacingOccurrencesOfString:@\"tooltipHtml:\""
                                 withString:@""];



    newString =[newString stringByReplacingOccurrencesOfString:@"("
                                 withString:@""];

等等......

(我可能有一些语法拼写错误,但你明白了,请使用stringByReplacingOccurrencesOfString方法)