如何從單個字符串中使用Java刪除單行SQL註釋? 我嘗試了類似於以下內容的內容,但這看起來似乎沒有什麼不妥。 需要一個正則表達式,當它們在選擇語句中顯示爲文字時,將處理' - '字符,如從雙重選擇'--hi'。使用java刪除單行SQL註釋
protected String removeSingleLineComments(String sql)
{
Pattern pattern = Pattern.compile("--[^\r\n]*");
Matcher matcher = pattern.matcher(sql);
while(matcher.find()) {
if((matcher.start()==0) || (matcher.start()>0 && sql.charAt(matcher.start()-1) != '\''))
{
sql =sql.replace(sql.substring(matcher.start(), matcher.end()), "").trim();
}
}
return sql;
}
什麼是你的SQL示例的模式?它總是1行SQL?多行SQL,但你只想刪除最後一行評論?你的代碼如何失敗? –
呃,你確定你的行尾總是有兩個字符嗎?並非每個平臺都使用相同的平臺。如果'Pattern'的值是硬編碼的,則可以將其設爲常量實例。 'String'有一個'replaceAll()'方法,它將輸入字符串(不需要'Pattern' /'Matcher'需要);你的'if'子句可以並且應該是正則表達式的一部分。 –
我知道String.replaceAll()。不過,我需要處理' - '作爲文本塊的一部分出現,就像在 - 從雙重選擇'--hi'一樣。用我的正則表達式,文本'--hi'也會被過濾掉。我需要一個新的模式來解釋文本塊 – user2589299