3

文字列 Hello-World-Test があります。この文字列を最初のダッシュだけで分割したいと思います。

文字列 1:Hello 文字列 2:World-Test

これを行う最善の方法は何ですか?私が今行っていることは、componentsSeparatedByString を使用し、配列内の最初のオブジェクトを取得し、それを文字列 1 として設定してから、文字列 1 の長さを開始インデックスとして使用して部分文字列を実行することです。

ありがとう!

4

2 に答える 2

5

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
于 2013-01-10T07:01:49.940 に答える
3

を使用rangeOfStringして if を検索し、 のベースで to を使用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);
}
于 2013-01-10T06:59:53.130 に答える