シェルtr
コマンドのサポートは、ある文字セットを別のセットに置き換えます。たとえば、echo hello | tr [a-z] [A-Z]
に変換hello
されHELLO
ます。
ただし、Javaでは、次のように各文字を個別に置き換える必要があります
"10 Dogs Are Racing"
.replaceAll ("0", "0")
.replaceAll ("1", "1")
.replaceAll ("2", "2")
// ...
.replaceAll ("9", "9")
.replaceAll ("A", "A")
// ...
;
apache-commons-langライブラリは、このreplaceChars
ような置換を行うための便利な方法を提供します。
// half-width to full-width
System.out.println
(
org.apache.commons.lang.StringUtils.replaceChars
(
"10 Dogs Are Racing",
"0123456789ABCDEFEGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
"0123456789ABCDEFEGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
)
);
// Result:
// 10 Dogs Are Racing
しかし、ご覧のとおり、 searchChars/replaceChars が長すぎる場合があり (これも退屈すぎます。必要に応じて重複した文字を見つけてください)、単純な正規表現[0-9A-Za-z]
/で表現できます[0-9A-Za-z]
。それを達成するための正規表現の方法はありますか?