为什么String.Trim没有修剪分号?

时间:2016-12-24 00:04:44

标签: c# string trim

我正在尝试使用String.Trim修剪字符串:

split[2].Trim(';')

但我得到的结果是:

System;

而不是:

System

我也尝试过使用:

split[2].TrimEnd(';')

但它仍会返回相同的结果。

如果我这样做:

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”而不是最终版本。

2 个答案:

答案 0 :(得分:4)

替换以下行:

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

有了这个:

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

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

答案 1 :(得分:0)

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

插入

split[2].Trim()

正确的

split[2].Trim(';')

很可能会成功。

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