Java 如何替换字符串中的特殊字符?

Java 如何替换字符串中的特殊字符?,java,string,Java,String,我有一个包含很多特殊字符的字符串。我想删除所有这些,但保留字母字符 replaceAll("[^a-zA-Z0-9]", ""); 我该怎么做呢?这取决于你的意思。如果您只是想摆脱它们,请执行以下操作: (更新:显然,您也希望保留数字,在这种情况下使用第二行) 或同等标准: String alphaOnly = input.replaceAll("[^\\p{Alpha}]+",""); String alphaAndDigits = input.replaceAll("[^\\p{Alpha

我有一个包含很多特殊字符的字符串。我想删除所有这些,但保留字母字符

replaceAll("[^a-zA-Z0-9]", "");

我该怎么做呢?

这取决于你的意思。如果您只是想摆脱它们,请执行以下操作:
(更新:显然,您也希望保留数字,在这种情况下使用第二行)

或同等标准:

String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(通过预编译regex模式并将其存储在常量中,所有这些都可以得到显著改进)

或:

但如果您想将重音字符转换为仍然是ascii码的合理字符,请查看以下问题:


您可以对字符串使用基本正则表达式来查找所有特殊字符,也可以使用模式和匹配器类来搜索/修改/删除用户定义的字符串。这个链接有一些简单易懂的正则表达式示例:

我正在使用这个

s = s.replaceAll("\\W", ""); 
它替换字符串中的所有特殊字符

这里

\w:一个单词字符,缩写为[A-zA-Z_0-9]


\W:非单词字符

您可以从Windows pc中的charactermap工具获取该垃圾字符的unicode,并添加\u例如\u00a9作为版权符号。
现在,您可以将该字符串与特定的垃圾字符一起使用,不要删除任何垃圾字符,而是替换为正确的unicode。

您可以使用以下方法保留字母数字字符

replaceAll("[^a-zA-Z0-9]", "");
如果你只想保留字母字符,就用这个

replaceAll("[^a-zA-Z]", "");
此处,除空格、逗号和符号外的所有特殊字符都被替换。还可以通过以下正则表达式省略空格、逗号和符号

string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");

其中输入是我们需要替换字符的字符串。

对于空格,使用“[^a-z a-z 0-9]”此模式将所有特殊字符替换为

replaceAll("[^a-zA-Z0-9]", "");
replaceAll("\\your special character","new character");
例如:将所有出现的*替换为空白

replaceAll("\\*","");

*此语句一次只能替换一种类型的特殊字符

按照的示例,我认为更好的解决方案是使用
org.apache.commons.lang3.StringUtils.stripAccents()


下面是一个用于从字符串中删除所有可能的特殊字符的函数

let name = name.replace(/[&\/\\#,+()$~%!.„'":*‚^_¤?<>|@ª{«»§}©®™ ]/g, '').toLowerCase();
let name=name.replace(/[&\/\\\\\\\,+()$~%!.“名称:”:*“^ ^名称”;@ª{«»§}™ ]/g、 '').toLowerCase();

查看此线程:当我使用此函数时,它也会删除所有数字。但我不想删除数字。只想删除特殊字符。请提出建议..你说你只需要字母表。但我会在一分钟内更新我的答案。我想输入字符串,但有一些条件,如1。如果e只是一个结果,不需要concat 2。如果结果大于1,则使用以下形式的concat字符串示例:stack+over+flow@Tanu这是一个不同的问题。让它成为一个新的。如果我不想删除空格呢?或者说所有空格(如制表符、换行符)仅折叠为一个空格?不适用于警报(“XSS攻击”)。如何删除“”,“\”字符?对于空格使用
replaceAll([^a-zA-Z0-9],”);
当我看到问题标题“如何替换字符串中的特殊字符”时,我肯定在寻找什么?“谢谢!你能解释一下正则表达式吗?我建议你在回答部分添加注释来解释你的代码。请阅读更多信息。这并不能真正回答问题。如果你有不同的问题,你可以通过单击来提问。你也可以在有足够的答案后提请更多的注意这个问题。”-
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;
    }
}
let name = name.replace(/[&\/\\#,+()$~%!.„'":*‚^_¤?<>|@ª{«»§}©®™ ]/g, '').toLowerCase();