我有一個字符串Hello-World-Test,我想僅用第一個破折號拆分這個字符串。拆分NSString並限制響應
串1:你好 字符串2:世界測試
什麼是做到這一點的最好方法是什麼?我現在正在做的是使用componentsSeparatedByString,獲取數組中的第一個對象並將其設置爲字符串1,然後使用字符串1的長度作爲開始索引執行子字符串。
謝謝!
我有一個字符串Hello-World-Test,我想僅用第一個破折號拆分這個字符串。拆分NSString並限制響應
串1:你好 字符串2:世界測試
什麼是做到這一點的最好方法是什麼?我現在正在做的是使用componentsSeparatedByString,獲取數組中的第一個對象並將其設置爲字符串1,然後使用字符串1的長度作爲開始索引執行子字符串。
謝謝!
使用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);
}
我添加上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
爲什麼要調用rangeOfString兩次?調用一次並保存位置。使用substringFromIndex和substringToIndex來獲取這兩個子字符串會更容易。 – rmaddy