たとえば、次のような文字列があります:abc123 [*] xyz [#] 098 [〜] f9e
[*]、[#]、および[〜]は、3つの異なる印刷不可能な文字を表します。Javaでそれらを「X」に置き換えるにはどうすればよいですか?
フランク
たとえば、次のような文字列があります:abc123 [*] xyz [#] 098 [〜] f9e
[*]、[#]、および[〜]は、3つの異なる印刷不可能な文字を表します。Javaでそれらを「X」に置き換えるにはどうすればよいですか?
フランク
このSOQ&Aは、特定の文字が印刷可能かどうかをJavaでテストする方法を示しています。
ご存知のとおり、Javaでは文字列を直接変更することはできません。代わりに、文字列で初期化された新しいStringBuilderオブジェクトを作成し、文字列ビルダーオブジェクトを変更します(たとえば、setCharAt
上記のメソッドでそのインデックスの文字が表示されない呼び出しを使用します。 t printable)、最後toString
に文字列ビルダーオブジェクトを呼び出して、新しい文字列オブジェクトを作成します。これは、メソッドから返すか、元の文字列を参照するために使用していたのと同じ識別子に割り当てることができます。正確なニーズ。
あなたの質問を理解しているかどうかわかりません。もっとうまく定式化できれば、単純な正規表現の置換で十分だと思います。
String r = s.replaceAll(REGEX, "X");
REGEX は、必要なものによって異なります。
"\\*|#|~" : matches only '*', "#', and '~'
"[^\\d\\w]" : matches anything that is neither a digit nor a word character
"\\[.\\]" : matches '[' followed by ANY character followed by ']'
"(?<=\\[).(?=\\])" : matches only the character surrounded by '[' and ']'