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
总是行的结尾,这一点很重要。