我有一个字符串,我需要删除这些符号:-- + [ ] { } ( ) \ /
例如:
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/