我希望使用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();
}
}
答案 0 :(得分:0)
添加双引号匹配,请尝试
Pattern p = Pattern.compile("[\\w'\"]+");
评论后编辑
msg = msg.toLowerCase().replace("'","'").replace(""e;","\"");