我有一个字符串,我需要删除这些符号:-- + [ ] { } ( ) \ /
例如:
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.
我的代码不会删除我需要的所有内容,而且我想知道是否有更短的方法来执行此操作。
-
我应该提到的一些特殊情况:-
只有在有两个一起时才应删除。
/
应该用空格替换。我将尝试在此处调整您的解决方案。感谢。
答案 0 :(得分:4)
您只需调用String.replaceAll方法并指定必须用空字符串替换这些字符:
clean = clean.replaceAll("(?:--|[\\[\\]{}()+/\\\\])", "");
但是如果您需要多次这样做,那么创建一个Pattern对象是值得的,这样就不必重复编译正则表达式:
private static final Pattern UNWANTED_SYMBOLS =
Pattern.compile("(?:--|[\\[\\]{}()+/\\\\])");
现在您可以使用它来创建Matcher对象并使用它来进行替换:
Matcher unwantedMatcher = UNWANTED_SYMBOLS.matcher(clean);
clean = unwantedMatcher.replaceAll("");
如果您需要在一个运行次数超过几次的循环中使用替换,这应该更有效。
答案 1 :(得分:1)
一,您不能使用/
转义,而是使用\
执行此操作。
二,如果你需要使用\
,你必须对其进行双重转义以使其进入正则表达式。
三,您可以将所有表达式合并为一个正则表达式。
四,您可以将来电链接到replaceAll()
。
public class Replace {
public static void main(String[] args) {
String clean = "This \\ is / an example. This -- is + an [(example)].";
clean = clean.replaceAll("[\\[()\\]{}+\\\\\\/-]", "").replaceAll(" +", " ");
System.out.println(clean.trim());
}
}
输出:
This is an example. This is an example.
答案 2 :(得分:1)
你应该能够一举删除所有东西。只需将所有内容放入角色类([]
)。
[\[\]+{}()\\/-]
如:
clean = clean.replaceAll("[\\[\\]+{}()\\\\/-]", "");
答案 3 :(得分:1)
您可以尝试:
String clean = "This \\ is / an example. This -- is + an [(example)].";
return clean.replaceAll("[(--)+\\[\\]{}()\\\\/]", "").trim());
答案 4 :(得分:0)
转义时将/
替换为\\
。
String clean = "This \\ is / an example. This -- is + an [(example)]."; // Had to change \ to \\
clean = clean.replaceAll("[\\[()\\]]", "");
clean = clean.replaceAll("\\-\\-", "");
clean = clean.replaceAll("\\/","");
clean = clean.replaceAll("\\\\", " ");
clean = clean.replaceAll("\\+", "");