Existe uma forma de expressão regular para substituir um conjunto de caracteres com outro conjunto (como o comando shell tr)?
A conchatr
Suporte ao comando substitui um conjunto de caracteres por outro conjunto. Por exemplo,echo hello | tr [a-z] [A-Z]
vai tranlatehello
paraHELLO
.
No java, no entanto, eu devo substituir cada caractere individualmente como o seguinte
"10 Dogs Are Racing"
.replaceAll ("0", "0")
.replaceAll ("1", "1")
.replaceAll ("2", "2")
// ...
.replaceAll ("9", "9")
.replaceAll ("A", "A")
// ...
;
oapache-commons-lang biblioteca fornece uma convenientereplaceChars
método para fazer tal substituição.
// 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
Mas como você pode ver, às vezes os searchChars / replaceChars são muito longos (também muito chatos, por favor, encontre um caractere duplicado se você quiser), e podem ser expressos por uma simples expressão regular.[0-9A-Za-z]
/[0-9A-Za-z]
. Existe uma maneira de expressão regular para conseguir isso?