TrimEnd的问题,送分了

mykelly6 2009-04-01 01:05:41

MessageBox.Show("dell.lnk".TrimEnd(".lnk".ToCharArray()));

我的原意是以.lnk为后缀名的就把后缀名去掉,但是得到的结果是"de",把需要的ll两个字母也带走了。。
这时候该怎么办?是不是.号有什么特殊含义阿?
...全文
241 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyi8808 2009-04-15
  • 打赏
  • 举报
回复

LZ的这个问题用下面的方法最合适了:
System.IO.Path.GetFileNameWithoutExtension() 方法
http://msdn.microsoft.com/zh-cn/library/system.io.path.getfilenamewithoutextension.aspx
mykelly6 2009-04-01
  • 打赏
  • 举报
回复
14#的太不具普遍性了吧,自己把ll加上去阿。。
不过看到".lnk".ToCharArray()应该也能能到是先转成char的array再去trim的。
Myth_NiuNiu 2009-04-01
  • 打赏
  • 举报
回复
MessageBox.Show("dell.lnk".TrimEnd(".lnk".ToCharArray())+"ll");这样就OK了,trimend把与给定数组中匹配的字符都删了!
mykelly6 2009-04-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 Myth_NiuNiu 的回复:]
楼主为什么不用substring啊非要trimend吗?
[/Quote]
呵呵,想偷懒~
mykelly6 2009-04-01
  • 打赏
  • 举报
回复
了解了,刚开始想用substring来着的,主要有些是文件夹信息所以没后缀名,就想偷懒trimend。。
Myth_NiuNiu 2009-04-01
  • 打赏
  • 举报
回复
楼主为什么不用substring啊非要trimend吗?
mykelly6 2009-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangqidong 的回复:]
MessageBox.Show("dell.lnk".SubString(0,"dell.lnk".LastIndexOf('.')));
[/Quote]
这个不错,但是如果后缀名没有.lnk就不行了。
一直以为这个函数就是结尾有指定的字符串就删掉,现在看来不是的阿
现在发现
MessageBox.Show("dell.lnk".TrimEnd("lnk".ToCharArray()).TrimEnd(".".ToCharArray()));
能得到dell。。
Kelen_love 2009-04-01
  • 打赏
  • 举报
回复
MessageBox.Show("dell.lnk".TrimEnd(".lnk".ToCharArray())); 等于把字符".","l","n","k"都去掉了
MessageBox.Show("dell.lnk".Substring(0,"dell.lnk".LastIndexOf('.')));这个正确
bobo_包子 2009-04-01
  • 打赏
  • 举报
回复
substring正解
wdyday 2009-04-01
  • 打赏
  • 举报
回复


C#中Trim()、TrimStart()、TrimEnd()的错误认识

这三个方法用于删除字符串头尾出现的某些字符。Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内,直到碰到一个非空格的字符为止,所以不管前后有多少个连续的空格都会被删除掉。TrimStart()只删除字符串的头部的空格。TrimEnd()只删除字符串尾部的空格。

如果这三个函数带上字符型数组的参数,则是删除字符型数组中出现的任意字符。如Trim("abcd".ToCharArray())就是删除字符串头部及尾部出现的a或b或c或d字符,删除的过程直到碰到一个既不是a也不是b也不是c也不是d的字符才结束。
这里最容易引起的误会就是以为删除的是"abcd"字符串。如下例:
string s = " from dual union all ";
s = s.Trim().TrimEnd("union all".ToCharArray());
可能有人以为上面s的最终结果是"from dual",但真正的结果是"from d"。需要注意的是这种写法执行的删除对象是字符数组中出现的任意字符,而不是这些字符连在一起组成的字符串!

原文
http://hi.baidu.com/kngiht888/blog/item/4205cdebc31b59d5d439c9e9.html

所以还是使用1楼的方法吧
lovefootball 2009-04-01
  • 打赏
  • 举报
回复
仔细看MSDN

从当前 String 对象移除数组中指定的一组字符的所有尾部匹配项。

也就是说你那样写的话,执行的删除对象是字符数组中出现的任意字符,而不是这些字符连在一起组成的字符串!
也就是"."、"l"、"n"、"k"
cja03 2009-04-01
  • 打赏
  • 举报
回复
".lnk".ToCharArray() 就是 . l n k
l在其中,所以dell中的l会被去掉。
wuyq11 2009-04-01
  • 打赏
  • 举报
回复
TrimEnd(); 删除字符串后的空格
string strName=str.Substring(0,str.LastIndexOf("."));
http://www.cnblogs.com/lastgame/archive/2009/01/24/1380651.html
mykelly6 2009-04-01
  • 打赏
  • 举报
回复
发现MessageBox.Show("dell".TrimEnd("lnk".ToCharArray()));得到的也是de..
十八道胡同 2009-04-01
  • 打赏
  • 举报
回复
只知道该函数功能.
yangqidong 2009-04-01
  • 打赏
  • 举报
回复
MessageBox.Show("dell.lnk".SubString(0,"dell.lnk".LastIndexOf('.')));

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧