3

私が文字列を持っているとしましょう:

@"(Mg(Ni+(N(O2)3";

文字列"("の出現箇所を置き換えることは可能かどうか疑問に思っていますが、 "+("を除きます。したがって、結果;

@"+Mg+Ni+(N+O2)3";

どうすればこれを行うことができますか?

4

3 に答える 3

8

この種のより複雑な文字列置換は、正規表現を使用して行うことができます。

ネガティブルックビハインドを使用して式を記述し、前にaが付いていないaを見つける(ことができます(この場合、より単純な代替方法がありますが、@ schのコメントを参照してください)。+

例:

NSString *string = @"(Mg(Ni+(N(O2)3";
NSLog(@"Original string: %@", string);
NSString *pattern = @"(?<!\\+)\\(";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];   
NSString *modifiedString = [regex stringByReplacingMatchesInString:string 
                                                           options:0
                                                             range:NSMakeRange(0, [string length])
                                                      withTemplate:@"$1+"];
NSLog(@"After replacement: %@", modifiedString);
于 2012-04-22T17:16:21.707 に答える
2

ここで正規表現に関する同様の問題について読んでください

正規表現を使用せずにクイックフィックスとして次のことを行うこともできます(例のような単純な形式の文字列で機能します):

  1. +(すべてをに置き換えます[
  2. (すべてをに置き換えます+
  3. [すべてをに置き換えます+)

[はあなたの文字列構文の一部ではないと思います。(使用しない場合)

于 2012-04-22T17:16:05.887 に答える
0

NSRegularExpressionClass次の方法を提供するがあります。

-(NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)template

これはおそらくあなたが望むものです。

于 2012-04-22T17:17:22.403 に答える