为什么 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
可能导致问题的可能性。
我正在尝试 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
可能导致问题的可能性。