"TrimEnd()"......结果出乎意料的结果随机过于贪婪

goo*_*ate 1 c# string trim .net-3.5

我在.NET 3.5下使用TrimEnd()获得了不一致的结果.TrimEnd看起来好像很简单,有什么我在这里做错了或者这是一个bug

成功案例

  var foundvalue = "hosted.local.chatter.com";
  Console.WriteLine(foundvalue.TrimEnd(".chatter.com".ToCharArray()));
  // Result is "hosted.local" which is expected.
Run Code Online (Sandbox Code Playgroud)

失败案例

 var foundvalue = "hosted.local.chattermailcom";
 Console.WriteLine(foundvalue.TrimEnd(".chattermailcom".ToCharArray()));
 // Result is "hosted" which is incorrect
Run Code Online (Sandbox Code Playgroud)

Ser*_*rvy 10

你没有删除确切的字符串,".chattermailcom"从最后,你要删除每个字符,'.','c','a','t','e','r'等等.字符串的结尾. ".chattermailcom"碰巧有所有的字母local,但".chatter.com"没有(关键字有l).

如果你想从最后删除整个字符串,请考虑使用EndsWith进行检查,然后substring如果它是真的.

您还可以考虑完全避免使用字符串操作并使用URI类; 它可以为您解析整个URL并返回各种组件.


Gen*_*ene 6

根据文档,TrimEnd删除字符串末尾的所有字符,这些字符位于您传递的数组中.对于第二种情况,"d"不是数组的一部分,因此该方法将在此处停止.