0

我想使用 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"

我的代码将插入 apos 2 次和 quot 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();
    }
}
4

1 回答 1

0

要添加双引号匹配,请尝试

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

评论后编辑

msg = msg.toLowerCase().replace("'","'").replace("&quote;","\""); 
于 2012-07-10T07:34:33.153 回答