为什么C#的TrimEnd()函数的行为如下所示?

Nav*_*ngh 0 c# string trim texttrimming

一个简单的代码段如下:

public static void Main()
{
    string str = "IsRecorded<code>0</code>";
    str = str.TrimEnd("<code>0</code>".ToCharArray());
    Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出字符串是IsRecor。为什么TrimEnd函数ded应该只从字符串中删除字符串呢<code>0</code>?另外,如果我减少strIsRec那么它将IsR作为输出给出。为什么会这样呢?

Jon*_*eet 6

参数用于TrimEnd指定要修剪的字符集。这并不意味着要修剪后缀

因此,您要说的是要修剪集合中的任何字符{ '<', 'c', 'o', 'd', 'e', '>', '0', '/' }。字母“ ded”都在该集合中,因此已被修剪。

如果要删除后缀,请不要使用TrimEnd。使用这样的东西:

public static string RemoveSuffix(string input, string suffix) =>
    input.EndsWith(suffix, StringComparison.Ordinal)
        ? input.Substring(0, input.Length - suffix.Length)
        : input;
Run Code Online (Sandbox Code Playgroud)

(字符串比较部分对于避免在某些情况下“引起有趣的”文化特定影响很重要。它基本上会进行最简单的匹配。)