сохранять только символы алфавита

Какой метод следует использовать в 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());