2016-07-20 47 views
0

我需要從NSString獲取一個子字符串。我需要-後的子字符串,如果它後面E,直到下一個-如何遍歷NSString並獲取子字符串?

例如,我有這個字符串A-BB-CD-EF_10AW -ZWE_EG

我需要得到EF_10AW 。任何想法如何迭代通過NSString並動態獲取子字符串?

+2

使用正則表達式。我現在無法訪問Xcode,但是這個表達式創建了一個捕獲物,返回EF_10AW給定您的測試字符串:^。* - (? E。*) - 。* $ – jp2g

回答

1

如果您的字符串包含以E開頭並以 - 結尾的多個字符串,則必須有一個可找到所有這些字符串的解決方案。對於這樣的解決方案請參考下面的代碼:

NSString *str = @"A-BB-CD-EF_10AW-ZWE_EG"; 

NSArray *compArray = [str componentsSeparatedByString:@"-"]; 

NSMutableArray *arrayStartWithE = [NSMutableArray array]; 

for (int i = 0; i < [compArray count]; i++) { 
    if ([[compArray objectAtIndex:i] hasPrefix:@"E"]) { 
     [arrayStartWithE addObject:[compArray objectAtIndex:i]]; 
    } 
} 

這裏arraystartWithE會給你所有這些類型的字符串。希望這可以幫助你。

0

試試這個 splitArray = [yourString componentsSeparatedByString:@「 - E」];

無需手動循環。

0
NSString *haystack = @"A-BB-CD-EF_10AW-ZWE_EG"; 
NSString *haystackPrefix = @"A-BB-CD-"; 
NSString *haystackSuffix = @"-ZWE_EG"; 
NSRange needleRange = NSMakeRange(haystackPrefix.length, 
           haystack.length - haystackPrefix.length - haystackSuffix.length); 
NSString *needle = [haystack substringWithRange:needleRange]; 
NSLog(@"needle: %@", needle); // -> "hello World"