¿Hay una forma de expresión regular para reemplazar un conjunto de caracteres con otro conjunto (como el comando shell tr)?
La cáscaratr
comando de soporte reemplazar un conjunto de caracteres con otro conjunto. Por ejemplo,echo hello | tr [a-z] [A-Z]
se traduciráhello
aHELLO
.
En java, sin embargo, debo reemplazar cada personaje individualmente como el siguiente
"10 Dogs Are Racing"
.replaceAll ("0", "0")
.replaceAll ("1", "1")
.replaceAll ("2", "2")
// ...
.replaceAll ("9", "9")
.replaceAll ("A", "A")
// ...
;
losapache-commons-lang biblioteca proporciona un convenientereplaceChars
Método para hacer dicho reemplazo.
// 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
Pero como puede ver, en algún momento los searchChars / replaceChars son demasiado largos (también demasiado aburridos, si lo desea, encuentre un carácter duplicado) y puede expresarse con una simple expresión regular[0-9A-Za-z]
/[0-9A-Za-z]
. ¿Hay una forma de expresión regular para lograr eso?