文字列 Hello-World-Test があります。この文字列を最初のダッシュだけで分割したいと思います。
文字列 1:Hello 文字列 2:World-Test
これを行う最善の方法は何ですか?私が今行っていることは、componentsSeparatedByString を使用し、配列内の最初のオブジェクトを取得し、それを文字列 1 として設定してから、文字列 1 の長さを開始インデックスとして使用して部分文字列を実行することです。
ありがとう!
NSString
特定の文字列が最初に出現したときに分割するカテゴリを追加しました。結果を配列で返すのは理想的ではないかもしれませんが、それ以外は問題ないようです。NSString
メソッドを使用するだけで、(B)rangeOfString:
を受け取り、その文字列 (B) がどこにあるかを示すものNSString
を返します。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
を使用rangeOfString
して if を検索し、 のベースで to を使用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);
}