我有一个包含两个子字符串的字符串:
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, "");
我正在寻找一个一行解决这个问题,有什么建议吗?
3条答案
按热度按时间63lcw9qa1#
您的代码存在这样一个问题:删除第一个子串可能会产生第二个子串的外观,而第二个子串以前不存在,然后在第二步中删除。任何分两步执行删除的方法都会遇到这个问题。
如果您只想删除出现在原始完整字符串中的两个子字符串的外观,那么您必须在一个过程中执行这两个删除操作,而使用基于regex的方法最容易实现这一点。如果子字符串可能包含正则表达式元字符,那么构造这样的正则表达式可能有点棘手,但是可以这样做:
我将它表示为一个跨越两行的语句,但行数只是一个空格的问题。如果源代码行的数量是您真正关心的,那么您可以将原始代码的行连接成一行。
请注意,上面的方法并不一定完美,因为在一个子串的尾部与另一个子串的开头匹配的情况下,它可能会执行您想要的操作,也可能不会执行您想要的操作。
pbwdgjma2#
您可以这样组合它们:
yrwegjxp3#
您可以使用regex删除多次出现的字符串,使用匹配的任何一个标记
结果: