Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中从字符串中删除多个表达式_Java_String - Fatal编程技术网

如何在java中从字符串中删除多个表达式

如何在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

我必须从字符串中删除诸如“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.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)
    表示忽略大小写
  • [cs]
    表示“c”或“s”
  • \\s*
    表示后面的所有空白(如果有)
    • 向regex问好

      name = name.replaceAll("(?i)[cs]/o\\s*", "");
      
      正则表达式细分:

      • (?i)
        表示忽略大小写
      • [cs]
        表示“c”或“s”
      • \\s*
        表示后面的所有空白(如果有)

      您可能应该将所有可能的问候语存储在一个数组中并循环使用,而不是使用多个if/else语句。@我可以获得任意数量的问候语,格式可以是“D/O、D/O、D/O、W/O、H/O”等等,如果你可以尝试在每种情况下使用正则表达式,你基本上也可以这样做。相反,您可以使用regex和一个类似于
      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,”)