只保留字母字符
我应该在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());