为什么 String.Trim 不删除分号?

Why is String.Trim not trimming a semicolon?

我正在尝试 trim 带有 String.Trim 的字符串:

split[2].Trim(';')

但我得到的结果是:

System;

而不是:

System

我也试过使用:

split[2].TrimEnd(';')

但它仍然returns相同的结果。

另外,如果我这样做:

split[2].Trim('S', ';')

我得到:

ystem;

我真的很困惑为什么会这样。会不会是因为分号不是字符串的最后一个字符?

完整代码如下:

string line = @"
using System;
using System.Windows.Forms;
class HelloWorld
{
    static void Main()
    {
#if DebugConfig
        Console.WriteLine("WE ARE IN THE DEBUG CONFIGURATION");  
#endif

        Console.WriteLine("Hello, world!");
        DialogResult result;
        result = MessageBox.Show("Itsyeboi", "Yup", MessageBoxButtons.YesNo);
        if (result == DialogResult.Yes)
        {
            Console.WriteLine("Yes");
            Console.ReadLine();
        }
        else
        {
            Console.WriteLine("No");
            Console.ReadLine();
        }

    }
}"
string[] split = line.Split(' ', '\n');
while (true)
{
    if (split[counter4] == "using")
    {
        richTextBox1.Text = split[1].Trim(';');
        break;
    }
    else
    {
          richTextBox1.Text = line;
        break;
    }
}

确实我的 while 循环毫无意义,但它是 "WIP" 而不是最终版本。

如果这个答案是错误的,我会删除它。由于信息稀少,这只是一个大胆的猜测。

插入

split[2].Trim()

就在

之前
split[2].Trim(';')

很可能会成功。

如果不是,但您知道最后一个字符是 ; 并且您只想摆脱它,您也可以只对数组进行切片。这可能会更有效,因为您不需要比较任何字符,而如果您使用 TrimEnd 则很可能至少完成两次,如果您使用 Trim

则很可能至少完成三次

替换以下行:

string[] split = line.Split(' ', '\n');

有了这个:

string[] split = line.Replace("\r\n", "\n").Split(' ', '\n');

这会将任何回车 returns 替换为换行符,从而消除尾随 \r 可能导致问题的可能性。