0

二重引用符で囲まれた文字列値、たとえば「HomeLone」をJavaで返そうとしています。UIとデータベースの内容を一致させるためのテストスクリプトを作成しています。これがサンプルコードです

    public String getMonitorKeywords(String keywords1, String keywords2, String keywords3) {
    String words = "";
    if (keywords2 != null && keywords1 == null && keywords3 == null) {
        return words = keywords2.replaceAll("\\s+", " AND ");
        }

    else if(keywords2 == null && keywords1 == null && keywords3 != null){
        keywords2 = keywords3.replaceAll("\\s+", " OR ");
        words = keywords3;
        Util.println("From databse we have third keywords{}: " + words);
        return words;
    }

    else if(keywords2 != null && keywords1 != null && keywords3 == null){
        words = keywords1;
        Util.println("From databse we have first keywords{}: " + words);
        return words;
    }

    else if(keywords2 == null && keywords1 != null && keywords3 == null){
        words = keywords1;
        return words;
    }
    else {
        return null;
    }
}

私の方法の問題点です。keywords2に二重引用符{""}が含まれる単語がある場合、ANDがインクリメントされ、特定の単語セットには必要ありません。おかげで、引用符でそのような単語を除外するための正規表現と関係があることを知っています。すべての単語に引用符が付いているわけではありません。

4

2 に答える 2

0

試す:

("[^"]+?")|(\w+?)\b

に置き換え"$1$2 AND"ます。

これにより、結果の最後に余分な「AND」が残るため、それを削除する必要があります。

于 2013-01-08T19:42:20.763 に答える
0

それを取得しないでください...

"foo \"bar\" or something else".replaceAll("\\s+", " AND ")

生産する

foo AND "bar" AND または AND 何か AND それ以外

それはあなたの意図ではありませんか?

于 2013-01-08T19:11:07.617 に答える