Groovy String将引号添加到字符串的开头而不是结尾

时间:2014-08-07 19:04:47

标签: java string grails groovy

public ArrayList<String> findLocationOfXMLDocumentsWithSkills(ArrayList<String> skillsToFind){

    TreeMap<Integer, ArrayList<String>> fileLocationToNumberOfHits = new TreeMap<Integer, ArrayList<String>>(); 

    def sql = Sql.newInstance(/jdbc:sqlite:C:\Users\pdfFileSystem.db/, "org.sqlite.JDBC")
    sql.execute('CREATE TABLE IF NOT EXISTS skillList(SKILL TEXT NOT NULL, xmlFile0 TEXT, xmlFile1 TEXT, xmlFile2 TEXT)')

    fileLocationToNumberOfHits.put(1, new ArrayList<String>());

    for(String skill: skillsToFind){

        skill = skill.toUpperCase();
        def query = 'SELECT * FROM skillList WHERE SKILL="' + skill + '"'
        println query
        sql.eachRow(query) { row ->

            ...
        }
        ...
    }
    ...
}

所以,这是我尝试使用Grails运行的代码。

对于除for循环的最后一次迭代以外的所有迭代,println查询将打印 "ELECT * FROM skillList WHERE SKILL ="{skill} 其中{技能}被技能所取代。

为什么用"替换字符串的第一个字符而不是将其添加到字符串的末尾?

我有同样的代码在同一个类的其他函数中运行,它可以工作 完全应该。

有谁知道发生了什么事?

2 个答案:

答案 0 :(得分:0)

替换:

def query = 'SELECT * FROM skillList WHERE SKILL="' + skill + '"'

有:

def query = "SELECT * FROM skillList WHERE SKILL='$skill'"

更多关于字符串和GStrings in groovy的信息: http://groovy.codehaus.org/Strings+and+GString

答案 1 :(得分:0)

它与我用来生成skillToFind的分割函数有关。

我在从我网站上的textArea生成的String上使用了.split(&#39; \ n&#39;)。 结果字符串在字符串的末尾有一些额外的字符(除了最后一个字符串,因为它没有被拆分)。

我刚从字符串中删除了该字符,现在一切正常。

谢谢大家的帮助!