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

问题描述 投票:6回答:2

我正在尝试用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”而不是最终版本。

c# string trim
2个回答
4
投票

替换以下行:

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

有了这个:

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

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


0
投票

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

插入一个

split[2].Trim()

就在之前

split[2].Trim(';')

最有可能做到这一点。

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

© www.soinside.com 2019 - 2024. All rights reserved.