[英]How to remove any non-alphanumeric characters?
我想从字符串中删除任何非字母数字字符,除了某些字符串。
StringUtils.replacePattern(input, "\\\\p{Alnum}", "");
我怎样才能排除那些特定的字符,比如.-;
?
使用not运算符^
:
[^a-zA-Z0-9.\-;]+
这意味着“匹配不是这些字符”。 所以:
StringUtils.replacePattern(input, "[^a-zA-Z0-9.\\-;]+", "");
不要忘记正确转义需要转义的字符:你需要使用两个反斜杠\\\\
因为你的正则表达式是一个Java字符串。
你可以否定你的表达;
\p{Alnum}
将它放在负字符类中:
[^\p{Alnum}]
这将匹配任何非字母数字字符,然后您可以用""
替换那些。 如果你想允许其他字符,你可以将它们附加到字符类,例如:
[^\p{Alnum}\s]
将不匹配空格字符( \\s
)。
如果你在哪里更换
[^\p{Alnum}.;-]
用""
,这些字符也将被允许: .
, ;
或-
。
StringUtils使用Java的标准Pattern
类。 如果您不想导入Apache的库并希望它更快地运行(因为它不必在每次使用时编译正则表达式),您可以执行以下操作:
private static final Pattern NO_ODD_CHARACTERS = Pattern.compile("[^a-zA-Z0-9.\\-;]+");
...
String cleaned = NO_ODD_CHARACTERS.matcher(input).replaceAll("");
你的意思是像StringUtils.replacePattern(input, "[^az\\.\\-]+", "");
- 即使我不确定StringUtils是否使用特殊的RegEx语法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.