сохранять только символы алфавита
Какой метод следует использовать в java для получения
"WordWord"
из
"Word#$#$% Word 1234"
Ответы
Ответ 1
Вы можете использовать String.replaceAll(regex, replacement)
с регулярным выражением [^A-Za-z]+
следующим образом:
String newstr = "Word#$#$% Word 1234".replaceAll("[^A-Za-z]+", "");
// newstr will become WordWord
Изменить: Хотя OP ничего не упоминал о unicode characters
но поскольку @Joey сделал комментарий и, если вообще существует требование сохранить символы юникода, тогда \\P{L}+
regex следует использовать следующим образом:
String newstr = "Word#$#$% Word λ1234ä, ñ, ж".replaceAll("\\P{L}+", "");
// newstr will become WordWordλäñж
Ответ 2
public static void main(String[] args) {
String input = "Word#$#$% Word 1234";
String extract = input.replaceAll("[^a-zA-Z]+", "");
System.out.println(extract);
}
вывод:
WordWord
Ответ 3
Использование потока:
List<Character> letters = string.chars()
.mapToObj(i -> (char) i)
.filter(Character::isAlphabetic)
.collect(Collectors.toList());
Ответ 4
Вы можете использовать Character.isLetter(char c)
в классе символов, как это
String s = "Word#$#$% Word 1234";
StringBuffer r = new StringBuffer();
for (int k = 0; k < s.length(); k++) {
if(Character.isLetter(s.charAt(k)))
r.append(s.charAt(k));
}
System.out.println("Result " + r.toString());