使用go語言將單反斜杠改為雙反斜杠的方法
問題
最近開發(fā)的時候遇到這么個問題,就是在window上獲取了文件目錄的字段,然后將這個絕對路徑保存到數(shù)據(jù)庫,最后前端需要請求的時候,就需要讀取數(shù)據(jù)庫存的文件目錄路徑給前端,前端要進行展示。但是前端展示的時候路徑的雙反斜杠變成了單反斜杠,然后問題來了,對于這個路徑我們有模糊查詢的功能,導(dǎo)致含有單反斜杠的模糊查詢無法正常查詢。
經(jīng)過查詢多方資料和測試,發(fā)現(xiàn)反斜杠是屬于轉(zhuǎn)義字符,我查看數(shù)據(jù)庫和返回給前端的數(shù)據(jù),里面的數(shù)據(jù)都是有兩個反斜杠的,但是前端顯示出來就只有一個,這個是屬于正常的,因為是字符串,兩個反斜杠,其中一個被認為是轉(zhuǎn)義字符,另一個被認為是字符串,所以只顯示一個反斜杠,但是關(guān)鍵字查詢的時候,用戶肯定是直接復(fù)制顯示的單個反斜杠的字符串,所以就導(dǎo)致了查詢不出來。
具體的現(xiàn)象如下所示:
1、現(xiàn)象描述
前面已經(jīng)簡單說了情況,我數(shù)據(jù)庫里面存的是這樣子的:
C:\\Program Files\\WPS Office\\12.1.0.16250\\wtoolex\\wpsupdate.exe
但是你如果取出數(shù)據(jù)然后打印出來,他也是單反斜杠,因為打印的時候他認為兩個單反斜杠其中一個是轉(zhuǎn)義字符,但是數(shù)據(jù)庫里面本質(zhì)是存的兩個反斜杠,你把數(shù)據(jù)取出來寫到文件里面看,就是兩個單反斜杠。
然后我發(fā)給前端,前端收到的也是雙反斜杠的,但是就顯示的就是單斜杠,所以查詢的時候考妣網(wǎng)頁顯示單反斜杠的路徑去模糊查詢是查詢不到的。
2、解決辦法
當時我想到的解決辦法有兩種,一種就是讓前端直接顯示全部的字符串,即顯示兩個反斜杠的字符串,然后用戶到時候直接復(fù)制來進行模糊查詢即可,前端的處理方法我目前不知道咋個實現(xiàn),應(yīng)該還是可以實現(xiàn)的,我做后端的,這里講下我后端怎么實現(xiàn)的:
后端的實現(xiàn)方法就是將原來的單反斜杠給他變成雙反斜杠,我之前找了很久,一直沒找到實現(xiàn)的方法,最后無意中找到了,使用fmt.Sprintf就可以實現(xiàn)。具體實現(xiàn)代碼如下所示
strjelly := `C:\jelly\path`
strjelly = fmt.Sprintf("%#v", strjelly)
num := len(strjelly)
fmt.Println(num)
fmt.Println(strjelly)
fmt.Println(strjelly[1 : num-1])代碼中,假設(shè)你的字符串變量是strjelly,字符串里面含有兩個單反斜杠,然后經(jīng)過fmt.Sprintf("%#v", strjelly)處理后,里面的單反斜杠就會變成雙反斜杠,但是這樣轉(zhuǎn)換后不能直接用,因為這樣轉(zhuǎn)換后,他會前后多字符串引號,需要使用strjelly[1 : num-1])把前后的兩個引號字符給去掉,具體的打印如下所示:
17
"C:\\jelly\\path"
C:\\jelly\\path
可以看到,經(jīng)過fmt.Sprintf處理后,字符串的長度多了4,原來的字符串數(shù)一下是13,為什么多個4呢,因為轉(zhuǎn)換后兩個單反斜杠變成了雙反斜杠,增加了2,然后前后多了一個引號,增加了2,一共就是增加了4。然后再使用strjelly[1 : num-1]去掉前后的兩個引號即可。
3、總結(jié)
以上就是記錄的單反斜杠轉(zhuǎn)雙反斜杠的記錄,本方法是針對go語言的,可能場景比較特殊,不是非常適用,也記錄下來,方便后續(xù)查詢。其實最開始的時候,比較困惑,因為打印出來就是單反斜杠,然后讀出來用文件保存下來又是雙反斜杠,還是折騰的比較久。最后經(jīng)過查詢,猜測,驗證,終于明白了其中的關(guān)鍵,其實當時使用打印字符串的長度估計也能知道其中的蹊蹺所在。
相關(guān)文章
Golang 語言極簡類型轉(zhuǎn)換庫cast的使用詳解
本文我們通過 cast.ToString() 函數(shù)的使用,簡單介紹了cast 的使用方法,除此之外,它還支持很多其他類型,在這沒有多多介紹,對Golang 類型轉(zhuǎn)換庫 cast相關(guān)知識感興趣的朋友一起看看吧2021-11-11
Golang常見錯誤之值拷貝和for循環(huán)中的單一變量詳解
這篇文章主要給大家介紹了關(guān)于Golang常見錯誤之值拷貝和for循環(huán)中單一變量的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧。2017-11-11

