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ąć?