C# string类型遇到的两个问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# string类型遇到的两个问题相关的知识,希望对你有一定的参考价值。

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

 

以上是关于C# string类型遇到的两个问题的主要内容,如果未能解决你的问题,请参考以下文章

C#如何将枚举类(enum)型转换成字符(string)类型

C#中string类型是啥类型

C#中的字符串, String类和StringBuilder类

C#语言——类

C# string类型和byte[]类型相互转换

string类和stringBuilder类