java - 从字符串中删除标点符号

标签 java regex string replaceall

我有一个字符串,我需要删除这些符号:-- + [ ] { } ( ) \ /

例如:

    String clean = "This \ is / an example. This -- is + an [(example)].";

    clean = clean.replaceAll("[/[()/]]", "");
    clean = clean.replaceAll("/-/-", "");

    clean = clean.replaceAll("\\/","");
    clean = clean.replaceAll("\\\\", " ");
    clean = clean.replaceAll("\\+", "");

    return clean.replaceAll("[ ]+", " ").trim();

我的输出应该是:This is an example. This is an example.

我的代码没有删除我需要的所有内容,我也想知道是否有更短的方法来做到这一点。

--

我应该提到一些特殊性:-仅当两个一起时才应删除。 /应替换为空格。我将尝试在这里调整您的解决方案。谢谢。

最佳答案

您可以简单地调用 String.replaceAll 方法并指定这些字符必须替换为空字符串:

clean = clean.replaceAll("(?:--|[\\[\\]{}()+/\\\\])", "");

但是如果您需要多次执行此操作,则值得创建一个 Pattern 对象,以便不必重复编译正则表达式:

private static final Pattern UNWANTED_SYMBOLS =
        Pattern.compile("(?:--|[\\[\\]{}()+/\\\\])");

现在您可以使用它来创建一个 Matcher 对象并使用它来进行替换:

Matcher unwantedMatcher = UNWANTED_SYMBOLS.matcher(clean);
clean = unwantedMatcher.replaceAll("");

如果您需要在运行多次的循环中使用替换,这应该会更有效。

关于java - 从字符串中删除标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24395364/

相关文章:

Java SE 7 Arrays.binarySearch()

Java class.getResource().getPath() 在 URL 的开头添加了一个奇怪的 '/'

c# - 如何将字符串值转换为对象属性名称

java - 如何验证用户输入的字符串? ( java )

java - 如何在 JAVA 中更改服务器套接字连接的回复端口

java - 使用 Java 线程设置超时

regex - 正则表达式匹配句子中括号内的单词

c# - 如何检测下划线 ("_") 之间的数字?

"string x/0/y"的正则表达式

java - 在没有 StringBuilder 的情况下反转 Java 中的字符串