Существует ли способ регулярного выражения для замены набора символов другим набором (например, командой shell tr)?
Оболочкаtr
Поддержка команд заменяет один набор символов другим набором.
Например,echo hello | tr [a-z] [A-Z]
переведуhello
вHELLO
.
В Java, однако, я должен заменить каждый символ индивидуально, как показано ниже
"10 Dogs Are Racing"
.replaceAll ("0", "0")
.replaceAll ("1", "1")
.replaceAll ("2", "2")
// ...
.replaceAll ("9", "9")
.replaceAll ("A", "A")
// ...
;
Апач-Обще-языки библиотека предоставляет удобныйreplaceChars
способ сделать такую замену.
// 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
Но, как вы можете видеть, иногда searchChars / replaceChars слишком длинные (также слишком скучные, пожалуйста, найдите дублированный символ, если хотите) и могут быть выражены с помощью простого регулярного выражения[0-9A-Za-z]
/[0-9A-Za-z]
, Есть ли способ регулярного выражения для достижения этого?