2013-10-03 2 views
-4

Поскольку я не могу получить логику, чтобы отделить разобранного снабжать струной, тетивой и т.п. Как я могу отделить эту NSString?

tooltipHtml: «(26,3 км/29 мин)»

и я хочу, чтобы удалить другую часть, за исключением "26,3 км '&' 29 мин '. Иногда вместо 'минут' может быть 'hrs- минут'

+0

автоматического извлечения, а? – trojanfoe

+0

Вам нужна часть между круглыми скобками? – rmaddy

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

Или вы можете использовать метод Regex, однако я не очень хорошо знаком с ними, поэтому я не могу сказать вам, как именно это сделать, вам придется немного оглядеться.

+0

Я. проблема решена thanx .. –

+1

Это очень неэффективное решение. Лучше получить диапазон «(» и «)» и просто получить подстроку между этими диапазонами. – rmaddy

+0

Правда, но если что-то другое (например: T вместо t, это не работает). –

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



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

И так далее ...

(я мог бы иметь некоторые синтаксические опечатки, но вы получите, используйте метод stringByReplacingOccurrencesOfString точки)

+0

Что это делает, если не усложнять анализ остальных? –

+0

Я думаю, что в момент, когда он оставил его, строка начинается с «26,3 км». Таким образом, вы можете взять 'floatValue' и иметь первое число. – Tommy

+0

@HotLicks, что вы имеете в виду? Вопрос гласит, что он хочет удалить «tooltipHtml:» «не разобрать цифры – MobileMon

0

Если вы хотите использовать регулярные выражения вместо этого вы можете сделать:

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 минут

Смежные вопросы