C# 字符串的去空(包括制表符等)处理
前段时间项目中吃了字符串的一个大亏,水平不到家,细微处显真著。
我们在取某个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