-4

由于我无法获得分离解析字符串的逻辑

tooltipHtml:" (26.3 公里 / 29 分钟)"

我想删除除“ 26.3 km ”和“ 29 mins ”之外的其他部分。有时可以用 ' hrs-mins ' 代替 ' mins '

4

3 回答 3

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

或者你可以使用 Regex 方法,但是我对它们不是很熟悉,所以我不能告诉你具体怎么做,你必须看看周围。

于 2013-10-03T14:58:41.317 回答
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 公里/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分钟

于 2013-10-03T15:59:19.140 回答
-1
NSString *newString =[@"tooltipHtml:\" (26.3 km / 29 mins)\"" stringByReplacingOccurrencesOfString:@\"tooltipHtml:\""
                                 withString:@""];



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

等等……

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

于 2013-10-03T15:05:22.963 回答