2013-10-03 183 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分鐘