Sea*_*oyd 180
这取决于你的意思.如果您只想摆脱它们,请执行以下操作:(
更新:显然您也想保留数字,在这种情况下使用第二行)
String alphaOnly = input.replaceAll("[^a-zA-Z]+","");
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
Run Code Online (Sandbox Code Playgroud)
或等效的:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
Run Code Online (Sandbox Code Playgroud)
(通过预编译正则表达式并将其存储在常量中,可以显着提高所有这些功能)
或者,与番石榴:
private static final CharMatcher ALNUM =
CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'))
.or(CharMatcher.inRange('0', '9')).precomputed();
// ...
String alphaAndDigits = ALNUM.retainFrom(input);
Run Code Online (Sandbox Code Playgroud)
但是如果你想将重音符号转换为仍然是ascii的合理的字符,请看看这些问题:
Dhi*_*dya 61
我正在使用这个.
s = s.replaceAll("\\W", "");
Run Code Online (Sandbox Code Playgroud)
它替换字符串中的所有特殊字符.
这里
\ w:单词字符,[a-zA-Z_0-9]的缩写
\ W:非单词字符
您可以使用以下方法来保留字母数字字符.
replaceAll("[^a-zA-Z0-9]", "");
Run Code Online (Sandbox Code Playgroud)
如果你只想保留字母字符,请使用此功能
replaceAll("[^a-zA-Z]", "");
Run Code Online (Sandbox Code Playgroud)
小智 7
将任何特殊字符替换为
replaceAll("\\your special character","new character");
Run Code Online (Sandbox Code Playgroud)
例如:用空格替换所有出现的 *
replaceAll("\\*","");
Run Code Online (Sandbox Code Playgroud)
*此语句一次只能替换一种特殊字符
按照Andrzej Doyle 的回答示例,我认为更好的解决方案是使用org.apache.commons.lang3.StringUtils.stripAccents():
package bla.bla.utility;
import org.apache.commons.lang3.StringUtils;
public class UriUtility {
public static String normalizeUri(String s) {
String r = StringUtils.stripAccents(s);
r = r.replace(" ", "_");
r = r.replaceAll("[^\\.A-Za-z0-9_]", "");
return r;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
291478 次 |
| 最近记录: |