删除字符串中的所有字符但字母

时间:2017-04-06 18:59:55

标签: java string character punctuation

如果我有一个字符串"java",如何删除所有非字母字符以输出str = str.replaceAll("\\W", "" )?我试过SELECT CAST( (SUBSTRING('sfd_devtracker_back_2017_04_04_094339_4242105.bak',21,4))+'-'+ (SUBSTRING('sfd_devtracker_back_2017_04_04_094339_4242105.bak',26,2))+'-'+ (SUBSTRING('sfd_devtracker_back_2017_04_04_094339_4242105.bak',29,2)) AS date) DT ,FileName ORDER BY DT DESC ,但无济于事。

4 个答案:

答案 0 :(得分:3)

我想参考this article并引用它:

  

正则表达式示例和教程总是为您提供[a-zA-Z0-9] +正则表达式以及#34;验证字母数字输入"。它内置于许多验证框架中。这是完全错误的。这是一个必须永远不会出现在代码中的正则表达式,除非你有一个很好的解释。然而,这个例子无处不在。相反,正确的正则表达式是[\ p {L} 0-9] +

所以在你的情况下,它将是:

str.replaceAll("[^\\p{L}]", "");
System.out.println("ja.v_,a".replaceAll("[^\\p{L}]", ""));
System.out.println("сл-=о-_=во!".replaceAll("[^\\p{L}]", ""));

\p{L}是"字母"。

的Unicode定义

答案 1 :(得分:2)

你可以试试这个吗?

System.out.println("ja.v_,a".replaceAll("[^a-zA-Z]", "")) //java

答案 2 :(得分:1)

String test= "ja.v_,a";

int len=test.length();

String alphaString="";

for(int i=0; i<len; i++){
     if (Character.isLetter(test.charAt(i))) {
         alphaString=alphaString+test.charAt(i);
     }
}

System.out.println(alphaString);

答案 3 :(得分:0)

String s = "ja.v_,a";
s = s.replaceAll("[^a-z]", "");
System.out.println(s);

>java