我应该在java中使用什么方法来生成
"WordWord"
这
"Word#$#$% Word 1234"
答案 0 :(得分:64)
您可以将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}+
正则表达式应该像这样使用:
String newstr = "Word#$#$% Word λ1234ä, ñ, ж".replaceAll("\\P{L}+", "");
// newstr will become WordWordλäñж
答案 1 :(得分:9)
public static void main(String[] args) {
String input = "Word#$#$% Word 1234";
String extract = input.replaceAll("[^a-zA-Z]+", "");
System.out.println(extract);
}
输出:
WordWord
答案 2 :(得分:6)
使用流:
prepareCopy()
答案 3 :(得分:3)
您可以在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());
答案 4 :(得分:0)
以下答案的可读性更高
String inputString = "Word#$#$% Word 1234";
StringBuffer stringBuffer = new StringBuffer();
for (int k = 0; k < inputString.length(); k++) {
if (Character.isSpaceChar(inputString.charAt(k))) {
stringBuffer.append(" ");
} else {
if (Character.isLetter(inputString.charAt(k)))
stringBuffer.append(inputString.charAt(k));
}
}
System.out.println("Output : " + stringBuffer.toString());
}
输出:单词单词