寻找单行删除多个子字符串

时间:2015-04-28 03:51:36

标签: java string

我有一个包含两个子字符串的字符串:

sub_string1 = 123;
sub_string2 = 456;

full_string = "456".concat(sub_string1).concat(sub_string2);

稍后我想从sub_string1删除sub_string2full_string

我目前的做法很麻烦:

String Removed1 = full_string.replace(sub_string1, "");
String Removed2 = Removed1.replace(sub_string2, "");

我正在寻找一个解决这个问题的班轮,有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式使用匹配标记

删除多个字符串
String sub_string1 = "123";
String sub_string2 = "456";

String finals = "456df123".replaceAll(sub_string1 +"|"+sub_string2 , "");
//or
//String finals = "456df123".replaceAll("456|123" , "");
System.out.println(finals);

<强>结果

df

答案 1 :(得分:0)

你可以像这样组合它们:

String Removed = full_string.replace(sub_string1,"").replace(sub_string2, "");

答案 2 :(得分:0)

您的代码遇到的问题是,删除第一个子字符串可能会产生第二个字符串的外观,而这个子字符串以前不存在,然后在第二个步骤中将其删除。任何以两个步骤执行删除的方法都会遇到此问题。

如果您只想删除原始完整字符串中出现的两个子字符串的外观,那么您必须在一次传递中执行两次删除,这最容易通过正则表达式完成基于方法。如果子字符串可能包含正则表达式元字符,那么构造这样的正则表达式可能有点棘手,但可以这样做:

String removed = full_string.replace(
        Pattern.quote(substring1) + "|" + Pattern.quote(substring2), "");

我将它作为单个语句呈现为两行,但行数只是空白的问题。如果源代码行的数量确实是您所关心的,那么您可以将原始代码的行连接成一行。

请注意,上述内容仍然不一定完美,因为如果一个子字符串的尾部与另一个子字符串的尾部相匹配,它可能会也可能不会执行您想要的操作。