[C#]我对Trim()、TrimStart()、TrimEnd()的错误认识
2010-12-07 11:43 何朝阳 阅读(976) 评论(0) 编辑 收藏 举报这三个方法用于删除字符串头尾出现的某些字符。Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内,直到碰到一个非空格的字符为止,所以不管前后有多少个连续的空格都会被删除掉。TrimStart()只删除字符串的头部的空格。TrimEnd()只删除字符串尾部的空格。
如果这三个函数带上字符型数组的参数,则是删除字符型数组中出现的任意字符。如Trim("abcd".ToCharArray())就是删除字符串头部及尾部出现的a或b或c或d字符,删除的过程直到碰到一个既不是a也不是b也不是c也不是d的字符才结束。
这里最容易引起的误会就是以为删除的是"abcd"字符串。如下例:
string ClassID = "2005030401<hr class='h2' />2005030402<hr class='h2' />"; ClassID = ClassID.TrimEnd("<hr class='h2' />".ToCharArray());
我的目的是删除最后的那根水平线,当时也确实是用的这种方法,并没有觉得有什么不妥,直到系统运行后,一天老师给我说班号显示不全,而其他有些又是对的,我百思不得其解,根本没想到是这里除了问题,后来调试了好几次才发现,关键就在于“<hr class='h2' />”和“2005030402”都有个“2”,而且中间没其它字符,所以结果是“2005030401<hr class='h2' />200503040”,而不是“2005030401<hr class='h2' />2005030402”。需要注意的是这种写法执行的删除对象是字符数组中出现的任意字符,而不是这些字符连在一起组成的字符串!
其实,其实上面这个例子也可以这样实现:
ClassID = ClassID.Substring(0, ClassID.LastIndexOf("<"));
版权声明:
本文原创发表于博客园,作者为何朝阳,博客http://www.cnblogs.com/hechaoyang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
本文原创发表于博客园,作者为何朝阳,博客http://www.cnblogs.com/hechaoyang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。