3

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

字符串 1:Hello 字符串 2:World-Test

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

谢谢!

4

2 回答 2

5

我添加了一个类别,NSString以便在给定字符串的第一次出现时进行拆分。以数组形式返回结果可能并不理想,但除此之外似乎还不错。它只使用NSString方法rangeOfString:,该方法接受NSString(B) 并返回NSRange显示该字符串 (B) 所在的位置。

@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
于 2013-01-10T07:01:49.940 回答
3

用于rangeOfString查找 if split string exits,然后在 的基础上使用substringWithRangeto 。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);
}
于 2013-01-10T06:59:53.130 回答