1

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

如下所示,字符串中可能包含单词“Baci”或“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);

      }

}
4

4 回答 4

1

我认为这里更好的方法是不另外检查“Baci”的存在,即没有以下if检查

if(str.contains("Baci") || str.contains("BACI"))
于 2013-03-06T19:01:13.207 回答
1

您可以通过使用 \b 正则表达式(匹配“单词边界”)对其进行一些改进:

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

这样,您的代码不会将“my bacil is...”替换为“myl is...”

于 2013-03-06T19:01:42.000 回答
1

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

于 2013-03-06T19:01:54.577 回答
0

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

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

希望它会有用!

于 2013-03-07T02:14:46.440 回答