Czy istnieje sposób wyrażenia regularnego, aby zastąpić zestaw znaków innym zestawem (jak polecenie powłoki tr)?

Muszlatr obsługa poleceń zastępuje jeden zestaw znaków innym zestawem. Na przykład,echo hello | tr [a-z] [A-Z] przejdziehello doHELLO.

Jednak w Javie muszę zastąpić każdą postać z osobna, jak poniżej

"10 Dogs Are Racing"
    .replaceAll ("0", "0")
    .replaceAll ("1", "1")
    .replaceAll ("2", "2")
    // ...
    .replaceAll ("9", "9")
    .replaceAll ("A", "A")
    // ...
;

Theapache-commons-lang biblioteka zapewnia wygodnereplaceChars metoda dokonania takiej wymiany.

// 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

Ale jak widać, czasami searchChars / replaceChars są zbyt długie (również zbyt nudne, jeśli chcesz, znajdź w nich zduplikowany znak) i można to wyrazić prostym wyrażeniem regularnym[0-9A-Za-z]/[0-9A-Za-z]. Czy istnieje sposób wyrażenia regularnego, aby to osiągnąć?

questionAnswers(2)

yourAnswerToTheQuestion