删除任何非字母或数字的内容

时间:2013-11-25 09:47:23

标签: java

有没有办法删除Java中的所有字母或数字?

例如,

123$32 -> 12332
1234 abcd /n -> 1234abcd

4 个答案:

答案 0 :(得分:6)

Java有一个full regex implementation只需一行代码即可解决您的问题:

final String test = "123absäöü#+a";
final String result = test.replaceAll("[^\\p{IsDigit}\\p{IsAlphabetic}]", "");
System.out.println(result);

[^\\p{IsDigit}\\p{IsAlphabetic}]表示:

  • []任何字符(基于此括号内的定义)
  • ^不是
  • \\p{IsDigit}数字
  • \\p{IsAlphabetic}字母表中的字符

请注意,\\w或[a-z]仅适用于US-ASCII,并且与语言不兼容。如果您尝试使用上述示例,则会丢失一些字母。

答案 1 :(得分:1)

包括Java在内的任何编程语言中的正则表达式都可以做到这一点。查看this文章,了解如何在Java中使用正则表达式。

答案 2 :(得分:0)

试用此代码,简单易用

        String output = "";
        String word = "AbD#$989_=+1";
        for (int i = 0; i < word.length(); i++) {
            char c = word.charAt(i);
            if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
                output += c;
            }
        }

        System.out.println("outpt: " + output);

答案 3 :(得分:-1)

您应该查看.replaceAll方法。

首先,你应该使用String str作为例子:

    String str = new String("1234$no");
    str.replaceAll("[^A-Za-z0-9]", "");
    return str;

基本上,这将用“”

替换给定序列中的所有内容

祝你好运