我正在使用内置函数来删除重复行,但函数也将空白行视为重复项。谁能帮助我找到我错误的地方?这是我的代码:
protected void Remove_Duplicate_Lines_Click(object sender, EventArgs e)
{
(Remove_Empty_Lines_CheckBox_id.Checked) // Remove Blank Rows
String input_txt = "A \n\n B \n \n B \n\n C \n\n C \n\n D \n\n E";
string[] distinctLines = input_txt.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).Distinct().ToArray();
txt_output.InnerText = string.Join("\r\n", distinctLines);}
示例 2(不需要)
最佳答案
存在一些问题,主要是与您的 split 有关。您编写 input__txt
来包含“\n”,但稍后尝试在 Environment.NewLine
上进行拆分,它本身就是“\n\r”。因此 split 不会如你所愿地发生。
让我们考虑一下:
字符串 input_txt = "A\n A\n B\n D\n A\n E";
其次,即使您按“\n”进行拆分,结果也会有两个 A 条目,即“A”和“A ”,因为您没有修剪任何内容。
我的建议是拆分多个模式并删除空条目。您还需要 Trim() 每个项目,或者只需在分割模式中添加“”。最终结果的条目之间不会有任何空行。要在以后需要时控制空行,请在需要输出时自行执行此操作。
String input_txt = "A \n A \n B \n D \n A \n E";
string[] distinctLines = input_txt.Split(new string[] { Environment.NewLine, "\n", " " }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Trim())
.Distinct()
.ToArray();
txt_output.InnerText = string.Join(Environment.NewLine + Environment.NewLine, distinctLines);
这将输出:
A
B
D
E
关于c# - 如何删除重复字符串而不删除空行? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55335939/