前段時間項目中吃了字符串的一個大虧,水平不到家,細微處顯真著。
我們在取某個string型的參數值時,可能經常會做一步trim()處理,可是當這個字符串本身在末尾處不止是空格,比如在數據庫中,這個字段值后面跟了有tab制表符。
那么trim()函數對該制表符是無效的 ,視覺上可能僅僅是空格,當把它放到notepad++里的時候就能體現出來,或者在oracle數據庫里它也有制表符的體現。此時trim()后取出來的數據,在程序之后的處理可能發生意想不到的錯誤。
oracle語句中我們可以這樣處理
select regexp_replace('12 ','[[:space:]]', '') a from dual
oracle 正則表達式以[:apace:]來匹配所有空字符,包括(空格,回車,換行等)
c#中同樣是以正則表達式來處理,例如
NewString = Regex.Replace(OldString, @"\s", string.Empty);
注:直接對字符串用replace函數,然后以轉義符\s去匹配,無法匹配出字符串中的tab符,原因還未找到。建議用正則。
常用特殊字符的ascii值以及轉義符:
\0 ASCII 0 (NUL ) 字符
\' ASCII 39 單引號 (“'” ) 字符
\" ASCII 34 雙引號 (“"” ) 字符
\b ASCII 8 退格符(backspace)
\n ASCII 10 換行符 (nextline)
\r ASCII 13 回車符 (enter)
\t ASCII 9 制表符(TAB)
就當給自己做個筆記吧。
參考文章:http://www.linuxidc.com/Linux/2012-05/61468.htm
