只保留字母字符

我应该在java中使用什么方法来生成

"WordWord" 

 "Word#$#$% Word 1234" 

您可以将String.replaceAll(regex, replacement)与正则表达式[^A-Za-z]+如下所示:

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

编辑:虽然OP没有提到有关unicode characters任何内容,但由于@Joey发表了评论,并且如果要求保留unicode字符,那么\\P{L}+ regex应该像这样使用:

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

输出:

 WordWord 

使用流:

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

您可以在Character类中使用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());