數據庫字段包含反斜杠的查詢處理


像下圖中字段值里帶有反斜杠的記錄:

 

這種如果要查詢的話,必須使用3個反斜杠才能查到,比如 like ”%D\%“ 是查不到上面兩條記錄的,必須使用 like ”%D\\\%“ ,原因是反斜線符號會被語法分析程序剝離一次,在進行模式匹配時,又會被剝離一次,最后會剩下一個反斜線符號接受匹配。

那么在前端查詢框中輸入 ”D\“ ,提交到action后,action需要將反斜杠替換為三個反斜杠,而字符串 ”D\“ 在java中接收到時是有兩個反斜杠的,因為反斜杠在java中需要加一個反斜杠轉義為字符,像這個樣子: ”D\\“

那么replace是不是可以寫成這樣呢:str.replace("\\", "\\\\\\") ,兩個替換為6個。

No No No ,這樣子是不行的,因為反斜杠在正則表達式中需要加反斜杠轉義,也就是說雙反斜杠要寫成4個反斜杠,也就是說得改成4個反斜杠替換為12個,感覺好尬呀,太多反斜杠了,下面來看看正確的寫法:

myfileurl = myfileurl.replaceAll("\\\\", "\\\\\\\\\\\\");

 

服了服了,怕了怕了 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM