1

NSString固定長部分を持つ配列に分割したい。これどうやってするの?

私はそれについて検索しましたが、 componentSeparatedByString メソッドしか見つかりませんでした。手動で行うこともできますが、これを行うより速い方法はありますか?

4

3 に答える 3

6

「より速い」とは何を意味するかによって異なります-それがプロセッサのパフォーマンスである場合、それを打ち負かすのは難しいと思いますがsubstringWithRange:、このような問題を堅牢で簡単にコーディングするには、正規表現が実際に非常に役立ちます。

以下は、文字列を 10 文字のチャンクに分割するために使用できるもので、最後のチャンクを 10 文字未満にすることができます。

NSString *pattern = @".{1,10}";

残念ながら、正規表現機構の Cocoa 実装は洗練されていませんが、使用するのに十分単純です。

NSString *string = @"I want to split NSString into array with fixed-length parts. How can i do this?";

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern: pattern options: 0 error: &error];

NSArray *matches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];

NSMutableArray *result = [NSMutableArray array];                            
for (NSTextCheckingResult *match in matches) {
    [result addObject: [string substringWithRange: match.range]];
}
于 2013-09-13T21:31:22.840 に答える
0

文字列を一連の NSRanges に分割してから、NSString のsubstringWithRange:メソッドを使用してみてください。

于 2013-09-13T21:22:51.110 に答える
0

文字列はさまざまな方法で分割できます。1 つの方法は、スペース (または任意の文字) で分割することです。

NSString *string = @"Hello World Obj C is Awesome";

NSArray *words = [string componentsSeparatedByString:@" "];

文字列内の正確な位置で分割することもできます:

NSString *word = [string substringWithRange:NSMakeRange(startPoint, FIXED_LENGTH)];

固定長のループに入れて、可変配列に保存するだけです。

NSMutableArray *words = [NSMutableArray array];
for (int i = 0; i < [string length]; i++) {
    NSString *word = [string substringWithRange:NSMakeRange(i, FIXED_LENGTH)]; //you may want to make #define
    [array addObject:word];
}

お役に立てれば。

于 2013-09-13T21:42:26.333 に答える