web-dev-qa-db-ja.com

文字列の部分文字列を置換する方法

次のような文字列stringがあると仮定します。

"abcd=0; efgh=1"

「abcd」を「dddd」に置き換えたいと思います。私はそのようなことをしようとしました:

string.replaceAll("abcd","dddd");

それは動作しません。助言がありますか?

編集:具体的には、Javaで作業しており、HTMLドキュメント、具体的には<script>タグ間のコンテンツを解析しようとしています。このコンテンツを文字列に解析する方法をすでに見つけています。

 if(tag instanceof ScriptTag){
        if(((ScriptTag) tag).getStringText().contains("DataVideo")){
            String tagText = ((ScriptTag)tag).getStringText();
      }
}

次に、ある部分文字列を別の部分文字列に置き換える方法を見つけなければなりません。

49
MichalB

replaceAll() メソッドの戻り値を使用する必要があります。 replaceAll()は、現在の文字列の文字を置き換えません。新しい文字列を返します。

  • 文字列オブジェクトは不変であり、作成後に値を変更することはできません。
  • 正規表現が不要な場合は、replaceAll()の代わりにreplace()を使用できます。
    String str = "abcd=0; efgh=1";
    String replacedStr = str.replaceAll("abcd", "dddd");

    System.out.println(str);
    System.out.println(replacedStr);

出力

abcd=0; efgh=1
dddd=0; efgh=1
71
Alper

注意すべき2つのこと:

  1. Javaの文字列は不変であるため、代わりのメソッド呼び出しの戻り値を別の文字列に格納する必要があります。
  2. ここでは正規表現は本当に必要ありません。単に String#replace(String) を呼び出すだけで仕事ができます。

したがって、次のコードを使用します。

String replaced = string.replace("abcd", "dddd");
13
anubhava

次のように、新しい値を割り当てる変数を作成する必要があります。

String str = string.replaceAll("abcd","dddd");
12
EddyR

正規表現では、これはJavaだと思います。メソッドreplaceAll()は、サブストリングが置換された新しいストリングを返すので、これを試してください:

String teste = "abcd=0; efgh=1";

String teste2 = teste.replaceAll("abcd", "dddd");

System.out.println(teste2);

出力:

dddd=0; efgh=1
5

置換文字列のバックスラッシュ(\)とドル記号($)により、結果がリテラル置換文字列として扱われている場合とは異なる場合があることに注意してください。 Matcher.replaceAll を参照してください。必要に応じて Matcher.quoteReplacement(Java.lang.String) を使用して、これらの文字の特別な意味を抑制します。

javadoc から。

3
Amr Lotfy

Javascriptの場合:

var str = "abcdaaaaaabcdaabbccddabcd";
document.write(str.replace(/(abcd)/g,"----"));
//example output: ----aaaaa----aabbccdd----

他の言語では、似たようなものになります。グローバル一致を有効にすることを忘れないでください。

0
Isaac

おそらく、交換を行った後、または間違ったものを交換した後、それを割り当てていないのでしょう。試してください:

String haystack = "abcd=0; efgh=1";
String result = haystack.replaceAll("abcd","dddd");
0
Bwire