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?

questionAnswers(2)

yourAnswerToTheQuestion