0

我正在尝试返回位于双引号中的字符串值,例如“Home Lone”。我正在编写一个测试脚本来匹配我的 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;
    }
}

我的方法有问题,当关键字 2 有带双引号 {""} 的单词时,它会增加 AND 到其中,我不希望这些特定的单词集。谢谢我知道它与正则表达式有关,以过滤掉带引号的此类单词。并非所有单词都有引号。

4

2 回答 2

0

不明白...

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

生产

foo AND "bar" AND or AND something AND else

这不是你的本意吗?

于 2013-01-08T19:11:07.617 回答
0

尝试:

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

并替换为"$1$2 AND".

这将在结果末尾留下一个额外的“AND”,因此您需要将其修剪掉。

于 2013-01-08T19:42:20.763 回答