私が文字列を持っているとしましょう:
@"(Mg(Ni+(N(O2)3";
文字列"("の出現箇所を置き換えることは可能かどうか疑問に思っていますが、 "+("を除きます。したがって、結果;
@"+Mg+Ni+(N+O2)3";
どうすればこれを行うことができますか?
私が文字列を持っているとしましょう:
@"(Mg(Ni+(N(O2)3";
文字列"("の出現箇所を置き換えることは可能かどうか疑問に思っていますが、 "+("を除きます。したがって、結果;
@"+Mg+Ni+(N+O2)3";
どうすればこれを行うことができますか?
この種のより複雑な文字列置換は、正規表現を使用して行うことができます。
ネガティブルックビハインドを使用して式を記述し、前に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);
ここで正規表現に関する同様の問題について読んでください
正規表現を使用せずにクイックフィックスとして次のことを行うこともできます(例のような単純な形式の文字列で機能します):
+(
すべてをに置き換えます[
(
すべてをに置き換えます+
[
すべてをに置き換えます+)
私[
はあなたの文字列構文の一部ではないと思います。(使用しない場合)
NSRegularExpressionClass
次の方法を提供するがあります。
-(NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)template
これはおそらくあなたが望むものです。