我有一个字符串Hello-World-Test,我想只用第一个破折号分割这个字符串。
字符串1:您好 字符串2:世界测试
最好的方法是什么?我现在正在做的是使用componentsSeparatedByString,获取数组中的第一个对象并将其设置为String 1,然后使用String 1的长度作为起始索引执行substring。
谢谢!
答案 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 string
到NSRange
。
例如:
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);
}