keep only alphabet characters

Using a stream:

List<Character> letters = string.chars()
    .mapToObj(i -> (char) i)
    .filter(Character::isAlphabetic)
    .collect(Collectors.toList());

You can use String.replaceAll(regex, replacement) with the regex [^A-Za-z]+ like this:

String newstr = "Word#$#$% Word 1234".replaceAll("[^A-Za-z]+", "");
// newstr will become WordWord

Edit: Although OP hasn't mentioned anything about unicode characters but since @Joey has made a comment and if at all there a requirement to keep unicode characters then \\P{L}+ regex should be used like this:

String newstr = "Word#$#$% Word λ1234ä, ñ, ж".replaceAll("\\P{L}+", "");
// newstr will become WordWordλäñж

public static void main(String[] args) {
    String input = "Word#$#$% Word 1234";
    String extract = input.replaceAll("[^a-zA-Z]+", "");
    System.out.println(extract);
}

output:

WordWord

You can use Character.isLetter(char c) in Character class like this

 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());

Tags:

Java

String

Regex