我应该在java中使用什么方法来生成
"WordWord"
Run Code Online (Sandbox Code Playgroud)
从
"Word#$#$% Word 1234"
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 68
您可以像这样使用String.replaceAll(regex, replacement)正则表达式[^A-Za-z]+:
String newstr = "Word#$#$% Word 1234".replaceAll("[^A-Za-z]+", "");
// newstr will become WordWord
Run Code Online (Sandbox Code Playgroud)
编辑:虽然OP没有提到任何事情unicode characters但是因为@Joey发表了评论,并且如果要求保留unicode字符,那么\\P{L}+应该像这样使用正则表达式:
String newstr = "Word#$#$% Word ?1234ä, ñ, ?".replaceAll("\\P{L}+", "");
// newstr will become WordWord?äñ?
Run Code Online (Sandbox Code Playgroud)
public static void main(String[] args) {
String input = "Word#$#$% Word 1234";
String extract = input.replaceAll("[^a-zA-Z]+", "");
System.out.println(extract);
}
Run Code Online (Sandbox Code Playgroud)
输出:
WordWord
Run Code Online (Sandbox Code Playgroud)
使用流:
List<Character> letters = string.chars()
.mapToObj(i -> (char) i)
.filter(Character::isAlphabetic)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)