我有一个包含两个子字符串的字符串:
sub_string1 = 123;
sub_string2 = 456;
full_string = "456".concat(sub_string1).concat(sub_string2);
稍后我想从sub_string1
删除sub_string2
和full_string
。
我目前的做法很麻烦:
String Removed1 = full_string.replace(sub_string1, "");
String Removed2 = Removed1.replace(sub_string2, "");
我正在寻找一个解决这个问题的班轮,有什么建议吗?
答案 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), "");
我将它作为单个语句呈现为两行,但行数只是空白的问题。如果源代码行的数量确实是您所关心的,那么您可以将原始代码的行连接成一行。
请注意,上述内容仍然不一定完美,因为如果一个子字符串的尾部与另一个子字符串的尾部相匹配,它可能会也可能不会执行您想要的操作。