使用Java Pattern和Matcher将XML单词插入MySQL

时间:2012-07-10 06:36:33

标签: java mysql xml regex

我希望使用MySQL数据库跟踪群聊中的单词使用情况。目前传递给insertWords方法的消息是XML字符串。 XML字符串可以包含'"等特殊字符。有没有比使用String.replace将XML格式的字符串转换为普通消息更好的方法?

如果我的消息是:I'm bad, but they aren't that "good"

如何将其转换为:I'm bad, but they aren't that "good"

我的代码将插入2次和2次。我该如何解决这个问题?

Pattern p = Pattern.compile("[\\w']+");

PreparedStatement insertWordStmt = connection.prepareStatement("INSERT INTO word (word, count) VALUES (?, 1) " +
        "ON DUPLICATE KEY UPDATE count=count+1");

public void insertWords(String msg) {
    msg = msg.toLowerCase();
    try {
        Matcher m = p.matcher(msg);
        while ( m.find() ) {
            String word = msg.substring(m.start(), m.end());
            insertWordStmt.setString(1, word);
            insertWordStmt.executeUpdate();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

添加双引号匹配,请尝试

Pattern p = Pattern.compile("[\\w'\"]+"); 

评论后编辑

msg = msg.toLowerCase().replace("'","'").replace("&quote;","\"");