如何遍历NSString并获取子串?

时间:2016-07-20 03:51:06

标签: objective-c nsstring

我需要从NSString获取一个子串。我需要在-之后获取子字符串,如果后跟E,则直到下一个-

例如,我有这个字符串A-BB-CD- EF_10AW -ZWE_EG

我需要获得EF_10AW。关于如何迭代NSString并动态获取子串的任何想法?

3 个答案:

答案 0 :(得分: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将为您提供所有这些类型的字符串。希望这对你有帮助。

答案 1 :(得分:0)

试试这个 splitArray = [yourString componentsSeparatedByString:@“ - E”];

无需手动循环。

答案 2 :(得分: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"