最近在维护一位离职的同事写的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函数返回的字符串重新赋值给原始字符串即可。