拆分NSString并限制响应

时间:2013-01-10 06:27:49

标签: ios nsstring

我有一个字符串Hello-World-Test,我想只用第一个破折号分割这个字符串。

字符串1:您好 字符串2:世界测试

最好的方法是什么?我现在正在做的是使用componentsSeparatedByString,获取数组中的第一个对象并将其设置为String 1,然后使用String 1的长度作为起始索引执行substring。

谢谢!

2 个答案:

答案 0 :(得分:5)

我在NSString上添加了一个类别,以便在给定字符串的第一次出现时进行拆分。将结果返回到数组中可能并不理想,但是看起来很好。它只使用NSString方法rangeOfString:,它采用NSString(B)并返回显示字符串(B)所在位置的NSRange

@interface NSString (Split)

- (NSArray *)stringsBySplittingOnString:(NSString *)splitString;

@end

@implementation NSString (Split)

- (NSArray *)stringsBySplittingOnString:(NSString *)splitString
{
    NSRange range = [self rangeOfString:splitString];
    if (range.location == NSNotFound) {
        return nil;
    } else {
        NSLog(@"%li",range.location);
        NSLog(@"%li",range.length);
        NSString *string1 = [self substringToIndex:range.location];
        NSString *string2 = [self substringFromIndex:range.location+range.length];
        NSLog(@"String1 = %@",string1);
        NSLog(@"String2 = %@",string2);
        return @[string1, string2];
    }
}

@end

答案 1 :(得分:3)

使用rangeOfString查找是否split string exits,然后在substringWithRange的基础上使用create new stringNSRange

例如:

 NSString *strMain = @"Hello-World-Test";
 NSRange match = [strMain rangeOfString:@"-"];
if(match.location != NSNotFound)
{

    NSString *str1 = [strMain substringWithRange: NSMakeRange (0, match.location)];
    NSLog(@"%@",str1);
    NSString *str2 = [strMain substringWithRange: NSMakeRange (match.location+match.length,(strMain.length-match.location)-match.length)];
    NSLog(@"%@",str2);
}