如何在java中从字符串中删除多个表达式
我必须从字符串中删除诸如“C/O、C/O、C/O、S/O、S/O、S/O”等称呼语。这些称呼语来自第三方服务。服务可以返回这些表单中的任何内容。如何有效地做到这一点。我正在使用以下代码进行此操作:如何在java中从字符串中删除多个表达式,java,string,Java,String,我必须从字符串中删除诸如“C/O、C/O、C/O、S/O、S/O、S/O”等称呼语。这些称呼语来自第三方服务。服务可以返回这些表单中的任何内容。如何有效地做到这一点。我正在使用以下代码进行此操作: if(name.contains("C/O")){ name = name.replace("C/O", "").trim(); System.out.println("name: "+name); }else if(name.conta
if(name.contains("C/O")){
name = name.replace("C/O", "").trim();
System.out.println("name: "+name);
}else if(name.contains("S/O")){
name = name.replace("S/O", "").trim();
System.out.println("name: "+name);
}else if(name.contains("c/o")){
name = name.replace("c/o", "").trim();
System.out.println("name: "+name);
}else if(name.contains("S/o")){
name = name.replace("S/o", "").trim();
System.out.println("name: "+name);
}
任何更好的方法都可以做到这一点。请提出建议。传统的方法如下:
String[] salutations = {"C/O", "S/O", "c/o", "S/o"};
for (String salutation : salutations)
{
name = name.replace(salutation, "").trim();
}
这样做的传统方法如下所示:
String[] salutations = {"C/O", "S/O", "c/o", "S/o"};
for (String salutation : salutations)
{
name = name.replace(salutation, "").trim();
}
向regex问好
name = name.replaceAll("(?i)[cs]/o\\s*", "");
正则表达式细分:
表示忽略大小写(?i)
表示“c”或“s”[cs]
表示后面的所有空白(如果有)\\s*
- 向regex问好
name = name.replaceAll("(?i)[cs]/o\\s*", "");
正则表达式细分:
表示忽略大小写(?i)
表示“c”或“s”[cs]
表示后面的所有空白(如果有)\\s*
replaceAll((?i)(C/O|S/O)”,“”)的调用。该表达式删除所有C/O
或S/O
,不区分大小写。那么您的代码就只有name=name.replaceAll(“(?i)(C/O|S/O)”,”代码>就是这样。在执行替换之前,您不需要检查name.contains(some_string)
是否包含(some_string)
名称。replace(some_string,“”)
。您可能应该将所有可能的称呼存储在一个数组中并循环,不要有多个if/else语句。@I_有帮助吗?我可以得到任意数量的问候语和任何格式,如“D/O、D/O、W/O、H/O”等。我应该放置这些if块吗?您可以尝试在每种情况下使用正则表达式,您基本上也可以这样做。相反,您可以使用regex和一个类似于replaceAll((?i)(C/O|S/O)”,“”)的调用。该表达式删除所有C/O
或S/O
,不区分大小写。那么您的代码就只有name=name.replaceAll(“(?i)(C/O|S/O)”,”代码>就是这样。在执行替换之前,不需要检查name.contains(some_string)
是否包含name.replace(some_string,”)
。