最近在維護一位離職的同事寫的WPF代碼,偶然發現他使用C# string類型的兩個問題,在這裡記錄一下。 1. 使用Trim函數移除字串中的空格、換行符等字元串。 csRet.Trim(new char[] { '\r', '\n', '\t', ' ' });if (!csRet.Equals(s
最近在維護一位離職的同事寫的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函數返回的字元串重新賦值給原始字元串即可。