最近在維護一位離職的同事寫的WPF代碼,偶然發現他使用C# string類型的兩個問題,在這里記錄一下。
1. 使用Trim函數移除字串中的空格、換行符等字符串。
csRet.Trim(new char[] { '\r', '\n', '\t', ' ' });
if (!csRet.Equals(string.Empty))
statement1;
else
statement2;
上述代碼的意圖為:移除string類型變量csRet開頭和結尾處的換行符、制表符、空格符之后,判斷該字符串是否是空。
實際檢驗發現當csRet中只包含上述四種字符的時候,statement2被執行了,也就是說trim后的字符串不是空這是為什么呢?研究后發現,Trim函數確實是可以從字符串的開始、結束位置移除指定的字符串,但是,改動作並不是在原始字符串上操作的,而是會返回一個執行了移除操作之后的新字符串。所以若想要將csRet內的值改為Trim后的值,可以使用如下方法:
csRet =
csRet.Trim(new char[] { '\r', '\n', '\t', ' ' });
if (!csRet.Equals(string.Empty))
statement1;
else
statement2;
2. 使用Remove函數之后,原始字符串的值未改變
原因與上面的Trim函數使用后原始字符串未改變相同,Remove函數也不會改變原始字符串而是會返回一個新的string類型變量。若想修改原始string類型變量的值,只需要執行一個賦值操作,將Remove函數返回的字符串重新賦值給原始字符串即可。
