5

次の NSString があります。

Hello (my name is) John

(my name is)パーツをすばやく簡単に取り外すにはどうすればよいですか? (aとそれに続くものしかなく、)それ以外ではクラッシュしない状況を確実に処理できるようにしたいと考えています。

4

3 に答える 3

8

括弧の間のテキストを削除したい場合は、... まあ、括弧の間のテキストを削除します。

NSMutableString *s = [NSMutableString stringWithString:@"Hello (my name is) John"];
NSRange start = [s rangeOfString:@"("];
NSRange end = [s rangeOfString:@")"];
[s deleteCharactersInRange:(NSRange){ start.location, end.location - start.location + 1}];

(かっこができるまで繰り返す)

于 2013-06-04T20:01:39.397 に答える
6

正規表現を使用して簡単に実行できます (貪欲):

NSError *error = NULL;
NSString *stringToBeReplaced = @"Hello (my name is) John";
NSString *regexString = @"\\(.*\\)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:stringToBeReplaced options:0 range:NSMakeRange(0, [stringToBeReplaced length]) withTemplate:@""];
// Greedy means it will match "My name (is John) (Jobs)." => "My name ."

貪欲でない正規表現を使用するには、次のようにします。

NSString *regex = @"\\(.*?\\)";
于 2013-06-04T20:27:28.800 に答える