0

一个简单的代码片段如下:

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

我得到的输出字符串是IsRecor. 当函数应该只剥离时,为什么TrimEnd函数会从字符串中剥离。此外,如果我将其减少到,那么它会作为输出提供。为什么会这样?ded<code>0</code>strIsRecIsR

4

4 回答 4

6

参数 forTrimEnd指定要修剪的字符集。它并不意味着要修剪的后缀。

所以你说你想修剪 set 中的任何角色{ '<', '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;

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

于 2019-04-23T12:45:41.347 回答
1

您可以使用.LastIndexOf() & Remove()删除最后的字符串

string str = "IsRecorded<code>0</code>";
str = str.Remove(str.LastIndexOf("<code>0</code>"));

.LastIndexOf(string param) :这将找到指定字符串的最后一次出现的索引。

.Remove(int startIndex) : 从给定索引中删除字符串

于 2019-04-23T12:50:21.920 回答
0

试试这个:

        string str = "IsRecorded<code>0</code>";
        str = str.Substring(0, str.IndexOf("<code>0</code>"));
        Console.WriteLine(str);
于 2019-04-23T12:46:23.730 回答
0

另一种解决方案可能是:

string str = "IsRecorded<code>0</code>";
str = str.Replace("<code>0</code>", "");
Console.WriteLine(str);

PS:我知道不会只修剪末端部分,但如果它不是问题,那么它可以使用

于 2019-04-23T12:52:07.263 回答