2016-09-14 6 views
3

文字を含む文字列があります。最短の文字列を見つけたり、その文字列から文字列を削除する必要があります。NSStringから文字の並びを取り除く方法

Eg: NSString *string = @"FIRSTEXAMPLEEXAMPLETEST"; 
Output: FIRSTEXAMPLETEST 

あなたはそれを達成するために、適切なRegex formatを見つけることに私を助けてください。前もって感謝します。

答えて

1

(.+)\1+正規表現を使用して、最も長い連続した部分文字列と一致し、1回目の逆参照$1を使用して1回のオカレンスに置き換えることができます。

使用

NSError *error = nil; 
NSString *string = @"FIRSTEXAMPLEEXAMPLETEST"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(.+)\\1+" options:nil error:&error]; 
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"$1"]; 
NSLog(@"%@", modifiedString); // => FIRSTEXAMPLETEST 

Objective-C demo

パターンがの詳細を参照してください:

  • (.+) - 改行以外の1つの以上の文字をキャプチャグループ1は(改行にマッチできるようにする前に(?s)フラグを使用ドット付き)
  • \1+ - グループ1でキャプチャされた同じ部分文字列の1回以上の出現。
+1

ありがとう、ありがとうございます。私は1番目の逆参照を保持する$ 1を使用することを忘れました。 –

関連する問題