![](/img/trans.png)
[英]One-liner to count number of occurrences of String in a String[] in Java?
[英]Looking for one-liner to remove multiple sub-string
我有一个包含两个子字符串的字符串:
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, "");
我正在寻找一种可以解决这个问题的班轮,有什么建议吗?
您可以使用regex使用匹配任一标记来删除字符串的多次出现
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
您可以像这样组合它们:
String Removed = full_string.replace(sub_string1,"").replace(sub_string2, "");
您的代码存在以下问题:删除第一个子字符串可能会创建第二个字符串的外观,而第二个外观以前并不存在,然后在第二步中将其删除。 任何在两个步骤中执行删除操作的方法都会遇到此问题。
如果只想删除原始完整字符串中出现的两个子字符串中的那些外观,则必须一次执行两次删除操作,而这最容易通过基于正则表达式的方法来完成。 如果子字符串可能包含正则表达式元字符,则构造这样的正则表达式可能会有些棘手,但是可以这样做:
String removed = full_string.replace(
Pattern.quote(substring1) + "|" + Pattern.quote(substring2), "");
我将其表示为跨越两行的单个语句 ,但是行数仅是空格的问题。 如果源代码行的数量确实是您所关心的,那么您可以将原始代码的行连接成一个。
请注意,上面的内容并不一定是完美的,因为如果一个子字符串的尾部与另一个子字符串的开头相匹配,它可能会或可能不会满足您的要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.