最初の文字列はすべて変更できません。つまり、状態を変更できないため、保持している文字を変更することはできません。 replace
メソッドは元のStringに基づいて置き換えられた文字で新しいStringを作成するので、元のStringを保持していた参照であっても、返されたStringのどこかに格納する必要があります。
例:
String myText = "foo bar";
// this doesn't change string held by `myText`
myText.replace("foo", "x");
// this assigns new string with replaced characters to `res`
String res = myText.replace("foo", "x");
しかし、あなたはまた、第二の問題を持っています。 [...]
構文に基づいて、正規表現を使用したいと思われますが、replace
はそれをサポートしていません。あなたがしたいのはreplaceAll
です。正規表現[...]
における最後
ので[null,]
を表し、characters set単一を表す場合であり、単一の文字セット:n
OR u
OR l
(第l
は無関係である)OR ,
を。単語を見つけたい場合は[...]
を使用できません。 |
で表されるOR演算子が必要です(他の多くの言語のように)。
だからあなたのコードでは、私もnull
一部はまた、それらから削除されますので、あなたはあなたのtext
でnullable
のような言葉を持っていないと仮定しています
String replaced = text.replaceAll("null|,", "");
ようになるはずです。別の単語の一部と一致するときの状況を避けたい場合は、その単語をword boundaries \b
で囲むことができます。これは、アルファベット文字とアルファベット以外の文字の間の場所を表します(テキストの開始/終了も含みます)。 (したがって、この空の文字列でnull
または,
を交換
mGateway.replaceAll("\\bnull\\b|," , "");
:
ので、より安全な解決策は、のようにregex
で\\b
を使用し、正確な単語を置き換えるには
String replaced = text.replaceAll("\\bnull\\b|,", "");
部分文字列と文字の組み合わせであるため、重複していません。 – santafebound
'replace'は正規表現を使わず、' replaceAll'は正規表現を使いません。また正規表現の '[...]'は*シングル*文字セットです(または他の人がクラスと呼ぶ)。だから、 '[null、]'は 'n'を表します。' 'OR'''は' '(' 'は関係ありません)OR''です。つまり、 'null、not 'のような文字列の' replaceAll( "[null、]"、 "") 'は' ot'を返します。 – Pshemo
また、文字列は不変なので、 'replace'は元の文字列を変更せず、置き換えられたデータを持つ新しい文字列を返します。 'original = original.replace(foo、bar)'のような元の文字列を保持していた参照であっても、この結果をどこかに保存したい。 – Pshemo