我在使用string.TrimEnd()方法时看到了奇怪的结果
var s = "FDLBicester.freshviprint01";
var x = s.TrimEnd("freshviprint01".ToCharArray());
Console.WriteLine(x);产
FDLBicester.
但是,稍微修改TrimEnd以包括.:
var s = "FDLBicester.freshviprint01";
var x = s.TrimEnd(".freshviprint01".ToCharArray());
Console.WriteLine(x);产
FDLBic
?
为什么我会因为同时修剪ester而失去.
发布于 2017-06-05 08:52:43
TrimEnd()将修剪传递给它的所有字符。
当您不传递.时,裁剪就会停止,因为.不在要修剪的字符列表中。
当您传递.时,它就在需要修剪的字符列表中--以及前面的其他几个字符(即e、s、t和r),这些字符也会被裁剪。
发布于 2017-06-05 08:58:59
当你把
var x = s.TrimEnd(".freshviprint01".ToCharArray());实际上,您希望从{'.', '0', '1', 'e', 'f', 'h', 'i', 'i', 'n', 'p', 'r', 'r', 's', 't', 'v'}集合中删除所有尾随字符(c I是集合中的第一个字符):
"FDLBicester.freshviprint01" -> "FDLBic"请注意,icester中的所有字符都显示在集合中,这就是为什么要修剪掉的原因。你可能想剪掉一些后缀,比如:
var s = "FDLBicester.freshviprint01";
var suffix = ".freshviprint01";
var x = s.EndsWith(suffix)
? s.Substring(0, s.Length - suffix.Length)
: s;发布于 2017-06-05 08:53:03
TrimEnd从传递的trim数组的末尾裁剪每个字符,并重复这一点,直到字符串的最后一个字符不是数组的一部分。
var s = "FDLBicester.freshviprint01";
var x = s.TrimEnd(".freshviprint01".ToCharArray());cester.freshviprint01中的字符都是trim数组的一部分,这就是它们被删除的原因。不管它们是按照什么顺序通过的。
var x = s.TrimEnd(".01efihnprstv".ToCharArray()); 也会有同样的结果。
https://stackoverflow.com/questions/44365106
复制相似问题