2013-01-10 51 views
3

我有一個字符串Hello-World-Test,我想僅用第一個破折號拆分這個字符串。拆分NSString並限制響應

串1:你好 字符串2:世界測試

什麼是做到這一點的最好方法是什麼?我現在正在做的是使用componentsSeparatedByString,獲取數組中的第一個對象並將其設置爲字符串1,然後使用字符串1的長度作爲開始索引執行子字符串。

謝謝!

回答

3

使用rangeOfString找到,如果split string exits,然後用substringWithRangecreate 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); 
} 
+1

爲什麼要調用rangeOfString兩次?調用一次並保存位置。使用substringFromIndex和substringToIndex來獲取這兩個子字符串會更容易。 – rmaddy

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