2010-06-10 212 views
1

我有一個小問題,我有一個的NSString對象 (\ n 「個1無限循環」,\ n 「個加利福尼亞Cupertino 95014」,\ n美國\ n)的如何從字符串中獲取子字符串?

,我想在本第二內子。雙引號,並從該字符串第二個雙引號(Ex.Cupertino)的第一個逗號(注:我的字符串是動態)

到現在我已經使用stringByReplacingOccurrencesOfString:並能得到「1InfiniteLoop」「CupertinoCA95014」美國

但仍無法獲得庫比蒂諾。

是否有其他方法可以解決這個問題?

回答

13

使用substringWithRange:

NSRange r = NSMakeRange(20, 29); 
NSString *cup = [yourString substringWithRange: r]; 

在您的評論的解釋後,我會說

NSString *cup = (NSString*)[[yourString componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @",\""]] objectAtIndex: 4]; 
+0

hi luvieere, 感謝您的回覆,但我想要得到第二個雙引號和第一個逗號雙引號(Ex.Cupertino)開頭的子串,因爲我的字符串是動態的,所以我無法修復範圍它。 – raaz 2010-06-10 11:04:02

+0

@raaz檢查看到新的解決方案 – luvieere 2010-06-10 11:35:05

+0

嗨Luvieere,它的工作就像一個魅力。感謝您的幫助 – raaz 2010-06-11 08:50:49

1

這在很大程度上取決於你的原始字符串的結構是如何一致來講是分隔字符。

如果它總是會正是張貼,luvieere的答案是非常漂亮和緊湊。

如果佈局將始終是一致的,但每個字符串的內容可能不 - 例如,如果第一個地址行可能包含逗號 - 這將是最好使用兩遍:

// remember, kids: hard coded number literals are evil 
NSString* secondQuotedString = (NString*)[[componentsSeparatedByString:@"\""] objectAtIndex:3]; 
NSString* upToComma = (NString*)[[componentsSeparatedByString:@","] objectAtIndex:0]; 

如果嵌套結構不可靠 - 例如,如果字符串內可能存在轉義引號字符 - 那麼您需要做一些額外的解析以避免問題。

相關問題