我应该在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字符
的事情,但由于@Joey已经发表了评论,如果需要保留unicode字符,则应该像这样使用\\P{L}+
正则表达式:
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<Character> letters = string.chars()
.mapToObj(i -> (char) i)
.filter(Character::isAlphabetic)
.collect(Collectors.toList());
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());
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());
}
输出:单词 单词
ä
、ñ
、ж
或λ
这样的内容,而这些内容根据不同的人看法,也可能是字母。 - Joey\P{L}
。;-) - JoeyreplaceAll("[^A-Za-z0-9]+", "");
- anubhava