2013-03-06 97 views
1

我有一个字符串,从中我需要从中省略一个特定的字。Java:省略字符串中的字

如图所示,String可能包含一个词“巴契” OR“BACI”在它

我已经写了下面的工作正常所示的示例程序下面,但我想知道是否有更好的方法做它?

public class Test { 

     public static void main(String args[]) { 

      String str = "Mar 14 Baci WIC"; 
      if(str!=null&&!str.isEmpty()) 
      { 
       if(str.contains("Baci") || str.contains("BACI")) 
       { 
        str = str.replaceAll("(?i) Baci", ""); 
       } 
      } 

      System.out.println(str); 

     } 

} 
+1

我会和'[BACI | Baci]'一起走,但我怀疑这会产生多大的影响。 – christopher 2013-03-06 18:59:37

+1

你不需要if语句和'isEmpty()'检查。如果'str'不包含该单词,它将不会取代任何内容。 – shuangwhywhy 2013-03-06 19:10:05

回答

1

我觉得这里更好的办法将是不额外检查“巴契”,即是否存在等,而不以下if检查

if(str.contains("Baci") || str.contains("BACI")) 
+0

为什么我的第二条件是\t if(str.contains(“Baci”)|| str.contains(“BACI”))不需要? – Pawan 2013-03-06 19:25:52

+1

由于replaceAll方法将检查此并替换所有出现的情况您无需再次检查 – 2013-03-06 19:28:01

1

你可以稍微使用\ b正则表达式改进(其中“单词边界”匹配):

str = str.replaceAll("(?i) Baci\\b", ""); 

这样,你的代码不会取代“我的芽孢是......”与“MYL是......”

+0

感谢您的支持。 – Pawan 2013-03-06 19:57:58

1

您的第二个if条件是不必要的,因为replaceAll()将无错误地替换零次或多次出现的String

0

你可以.toUpperCase你的字符串,然后只要求包含(“BACI”)。在if块内,然后调用Baci和BACI两次替换。

再次思考它,我认为最好只是调用替换两次而不询问您的字符串是否包含它。如果它没有找到任何要替换的东西,那么它不会取代任何东西。

希望它会有用!