如果我有一个字符串"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
,但无济于事。
答案 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}
是"字母"。
答案 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