Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么String.Trim不是一个分号?_C#_String_Trim - Fatal编程技术网

C# 为什么String.Trim不是一个分号?

C# 为什么String.Trim不是一个分号?,c#,string,trim,C#,String,Trim,我正在尝试用字符串修剪字符串。修剪: split[2].Trim(';') 但我得到的结果是: System; 而不是: System 我还尝试使用: split[2].TrimEnd(';') 但它仍然返回相同的结果 如果我这样做: split[2].Trim('S', ';') 我得到: ystem; 我真的很困惑为什么会发生这种事。可能是因为分号不是字符串中的最后一个字符吗 以下是完整的代码: string line = @" using System; using Syste

我正在尝试用字符串修剪字符串。修剪:

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

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

插入

split[2].Trim()
就在

split[2].Trim(';')
很可能会成功


如果不是,但您知道最后一个字符是
如果您只想消除此问题,还可以对数组进行切片。这可能会更有效,因为您不需要比较任何字符,而如果使用
TrimEnd
则最有可能至少执行两次,如果使用
Trim
,则执行三次替换以下行:

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

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

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

请检查返回字符串的长度。也许是
不是尾随字符。while循环中到底发生了什么?你总是在一轮后中断,那么你为什么还需要它?@Staeff如果它还没有完成,我将删除第一个if语句中的中断。对于.net core,可能最好使用environment.NewLine()而不是“\r\n”(顺便说一句,因为它有两个字符,你不能将其用作单个字符)为了防止任何人感到困惑,
Environment.NewLine()
无论您是否使用.NET Core都可以工作。但是正如@Staeff所指出的,在.NET核心是跨平台的环境中,不要假设
\r\n
总是行的结尾,这一点很重要。