java 正则替换非数字和字母_java - 用空字符串替换所有非字母数字字符

java - 用空字符串替换所有非字母数字字符

我尝试使用这个但没有工作 -

return value.replaceAll("/[^A-Za-z0-9 ]/", "");

12个解决方案

209 votes

使用[^A-Za-z0-9]。

注意:删除空格,因为通常不会将其视为字母数字。

Mirek Pluta answered 2019-04-05T01:20:25Z

113 votes

尝试

return value.replaceAll("[^A-Za-z0-9]", "");

要么

return value.replaceAll("[\\W]|_", "");

Andrew Duffy answered 2019-04-05T01:20:48Z

47 votes

return value.replaceAll("[^A-Za-z0-9 ]", "");

这将使空间保持不变。 我认为这就是你想要的。 否则,从正则表达式中删除空格。

erickson answered 2019-04-05T01:21:13Z

46 votes

您应该知道[^a-zA-Z]将替换字符范围A-Z / a-z中不属于自身的字符。 这意味着特殊字符,如é,ß等或西里尔字符等将被删除。

如果不需要替换这些字符,请使用预定义的字符类:

someString.replaceAll("[^\\p{IsAlphabetic}^\\p{IsDigit}]", "");

PS:\p{Alnum}没有达到这个效果,它的作用与[A-Za-z0-9]相同。

Andre Steingress answered 2019-04-05T01:21:57Z

20 votes

你也可以尝试这个更简单的正则表达式:

str = str.replaceAll("\\P{Alnum}", "");

saurav answered 2019-04-05T01:22:23Z

10 votes

Java的正则表达式不需要在正则表达式周围放置正斜杠(/)或任何其他分隔符,例如,与其他语言(如Perl)相反。

abyx answered 2019-04-05T01:22:51Z

8 votes

我创建了这个方法来创建文件名:

public static String safeChar(String input)

{

char[] allowed = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".toCharArray();

char[] charArray = input.toString().toCharArray();

StringBuilder result = new StringBuilder();

for (char c : charArray)

{

for (char a : allowed)

{

if(c==a) result.append(a);

}

}

return result.toString();

}

zneo answered 2019-04-05T01:23:17Z

1 votes

简单方法:

public boolean isBlank(String value) {

return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));

}

public String normalizeOnlyLettersNumbers(String str) {

if (!isBlank(str)) {

return str.replaceAll("[^\\p{L}\\p{Nd}]+", "");

} else {

return "";

}

}

Alberto Cerqueira answered 2019-04-05T01:23:39Z

1 votes

public static void main(String[] args) {

String value = " Chlamydia_spp. IgG, IgM & IgA Abs (8006) ";

System.out.println(value.replaceAll("[^A-Za-z0-9]", ""));

}

输出:ChlamydiasppIgGIgMIgAAbs8006

Github:[https://github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java]

Albin answered 2019-04-05T01:24:13Z

1 votes

如果您还想允许不属于ascii字符集的字母数字字符,例如德语变音符号,您可以考虑使用以下解决方案:

String value = "your value";

// this could be placed as a static final constant, so the compiling is only done once

Pattern pattern = Pattern.compile("[^\\w]", Pattern.UNICODE_CHARACTER_CLASS);

value = pattern.matcher(value).replaceAll("");

请注意,使用UNICODE_CHARACTER_CLASS标志可能会对性能造成影响(请参阅此标志的javadoc)

snap answered 2019-04-05T01:24:49Z

0 votes

使用Guava,您可以轻松组合不同类型的标准。 您可以使用以下特定解决方案:

value = CharMatcher.inRange('0', '9')

.or(CharMatcher.inRange('a', 'z')

.or(CharMatcher.inRange('A', 'Z'))).retainFrom(value)

Debmalya Biswas answered 2019-04-05T01:25:15Z

0 votes

解:

0=0 = all characters included from 0 to 9

说明:

0=0 = all characters included from 0 to 9   当插入符号^作为方括号内的第一个字符出现时,它会否定该模式。 此模式匹配除a或b或c之外的任何字符。

将关键字看作两个函数:

0=0 = all characters included from 0 to 9

0=0 = all characters included from 0 to 9

此外,关于模式:

0=0 = all characters included from 0 to 9

0=0 = all characters included from 0 to 9

0=0 = all characters included from 0 to 9

因此,它将替换模式中包含的所有char

GalloCedrone answered 2019-04-05T01:26:34Z

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值