1

私は String を持っています。そこから特定の単語を省略する必要があります。

以下に示すように、文字列には単語「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

エラーなしの 0 回以上の発生を置き換えるため、 2 番目のif条件は不要です。replaceAll()String

于 2013-03-06T19:01:54.577 に答える
0

文字列を .toUpperCase してから、contains("BACI") のみを要求できます。if ブロック内で、Baci と BACI の両方で replace を 2 回呼び出すだけです。

もう一度考えてみると、文字列に含まれているかどうかを確認せずに、replace を 2 回呼び出すだけの方がよいと思います。置き換えるものが見つからない場合は、何も置き換えません。

それが役に立つことを願っています!

于 2013-03-07T02:14:46.440 に答える