shelltr
命令支持用另一组字符替换一组字符。例如,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]
。有没有正则表达式的方法来实现这一点?