【发布时间】:2011-05-16 01:31:38
【问题描述】:
我有一个包含很多特殊字符的字符串。我想删除所有这些,但保留字母字符。
我该怎么做?
【问题讨论】:
我有一个包含很多特殊字符的字符串。我想删除所有这些,但保留字母字符。
我该怎么做?
【问题讨论】:
这取决于你的意思。如果您只是想摆脱它们,请执行以下操作:
(更新:显然您也想保留数字,在这种情况下使用第二行)
String alphaOnly = input.replaceAll("[^a-zA-Z]+","");
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
或等价物:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(所有这些都可以通过预编译正则表达式模式并将其存储在常量中得到显着改善)
或者,Guava:
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);
但是,如果您想将重音字符转换为仍然是 ascii 的合理字符,请查看以下问题:
【讨论】:
我正在使用这个。
s = s.replaceAll("\\W", "");
它替换字符串中的所有特殊字符。
这里
\w : 单词字符,[a-zA-Z_0-9]的缩写
\W : 非单词字符
【讨论】:
您可以使用以下方法保留字母数字字符。
replaceAll("[^a-zA-Z0-9]", "");
如果您只想保留字母字符,请使用此
replaceAll("[^a-zA-Z]", "");
【讨论】:
replaceAll("[^a-zA-Z0-9 ]", "");
用
替换任何特殊字符replaceAll("\\your special character","new character");
ex: 用空格替换所有出现的 *
replaceAll("\\*","");
*此语句一次只能替换一种特殊字符
【讨论】:
按照Andrzej Doyle's answer的例子,我认为更好的解决方案是使用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;
}
}
【讨论】:
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
这里所有的特殊字符除了空格、逗号和 & 符号都被替换了。您还可以通过以下正则表达式省略空格、逗号和 & 符号。
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
其中 Input 是我们需要替换字符的字符串。
【讨论】:
这是我用来从字符串中删除所有可能的特殊字符的函数
let name = name.replace(/[&\/\\#,+()$~%!.„'":*‚^_¤?<>|@ª{«»§}©®™ ]/g, '').toLowerCase();
【讨论】:
您可以对字符串使用基本的正则表达式来查找所有特殊字符,或使用模式和匹配器类来搜索/修改/删除用户定义的字符串。此链接有一些简单易懂的正则表达式示例:http://www.vogella.de/articles/JavaRegularExpressions/article.html
【讨论】:
您可以从 pc 窗口中的字符映射工具获取该垃圾字符的 unicode 并添加 \u 例如\u00a9 为版权符号。 现在您可以将该字符串与该特定的垃圾字符一起使用,不要删除任何垃圾字符,而是用正确的 unicode 替换。
【讨论】:
对于空格使用“[^a-z A-Z 0-9]”这个模式
【讨论】: