使用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
.
答案 0 :(得分:4)
TrimEnd()
将修改所有传递给它的字符。
当你没有通过.
修剪停在那里时,因为.
不在要修剪的字符列表中。
当做传递.
时, 在要修剪的字符列表中 - 以及之前的其他几个字符(即, e
,s
,t
和r
),因此也会被修剪。
答案 1 :(得分:1)
TrimEnd
修剪作为传递修剪数组一部分的末尾的每个字符,并重复此操作,直到字符串的最后一个字符不是数组的一部分。
var s = "FDLBicester.freshviprint01";
var x = s.TrimEnd(".freshviprint01".ToCharArray());
cester.freshviprint01
中的字符都是修剪数组的一部分,这就是它们被移除的原因。它们通过的顺序无关紧要。
var x = s.TrimEnd(".01efihnprstv".ToCharArray());
会有相同的结果。
答案 2 :(得分:1)
TrimEnd
函数从字符串末尾删除任何char
个。它与完整的字符串不匹配。
请改为尝试:
var s = "FDLBicester.freshviprint01";
var t = ".freshviprint01";
var x =
s.Length > t.Length && s.Substring(s.Length - t.Length) == t
? s.Substring(0, s.Length - t.Length)
: s;
Console.WriteLine(x);
甚至这个:
var x = s.Split(new [] { t }, StringSplitOptions.None)[0];
答案 3 :(得分:1)
当你把
var x = s.TrimEnd(".freshviprint01".ToCharArray());
您确实要从{'.', '0', '1', 'e', 'f', 'h', 'i', 'i', 'n', 'p', 'r', 'r', 's', 't', 'v'}
设置中删除所有 结尾字符(c
是第一个字符那个不是在集合中):
"FDLBicester.freshviprint01" -> "FDLBic"
请注意,icester
中的所有字符都在中显示,这就是裁剪的原因。您可能想要切断一些后缀,如下所示:
var s = "FDLBicester.freshviprint01";
var suffix = ".freshviprint01";
var x = s.EndsWith(suffix)
? s.Substring(0, s.Length - suffix.Length)
: s;