只保留字母字符

时间:2012-03-26 12:21:11

标签: java string

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

"WordWord"

"Word#$#$% Word 1234"

5 个答案:

答案 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());
    }

输出:单词单词