2

私はこのような3本の弦で作られた弦を持っています

NSString *first = ..;
NSString *second = ..;
NSString *third = ..;

NSString joinedString;
joinedString = [NSString stringWithFormat:@"%@ - %@ (%@)", first, second, third];

次に、から3つの元の文字列を取得する必要がありますjoinedString。私はこれに使うべきどこかを読んだNSScanner。それがどのように機能するかについてのアイデアはありますか?

4

3 に答える 3

3

質問で提供した例を考えると、次のことができます。

// characters we are going to split at
NSString *sep = @" -()";
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:sep];
NSArray *strings = [joinedString componentsSeparatedByCharactersInSet:set];

// This is the simple way provided that the strings doesn't have spaces in them.

可変情報を持つより大きな文字列でNSScannerを使用し、干し草の山でその針を見つけたいと思います。

于 2011-03-28T12:24:47.437 に答える
1

投稿に記載されている正確なパターンを取得した場合は、NSRegularExpression(iOS 4以降)を使用できます。

NSString *regexStr = @"(.*)\s-\s(.*)\s\((.*)\)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:0 error:nil];
NSArray *results = [regex matchesInString:joinedString options:0 range:NSMakeRange(0, [joinedString length])];
NSString *string1 = [results objectAtIndex:0];
...

(エラー処理はなく、現在確認できません)

于 2011-03-28T12:36:54.063 に答える
1

あなたが使用することができますcomponentsSeparatedByCharactersInSet:

NSString *chars = @"-()";
NSArray *split = [joinedString componentsSeparatedByCharactersInSet:[NSCharacterset characterSetWithCharactersInString:chars]];

次に、開始/終了スペースをトリミングできます。

stringFromArray = [stringFromArray stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
于 2011-03-28T12:40:56.870 に答える