c# - 如何删除重复字符串而不删除空行? C#

标签 c# string

我正在使用内置函数来删除重复行,但函数也将空白行视为重复项。谁能帮助我找到我错误的地方?这是我的代码:

 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);}

示例: enter image description here

示例 2(不需要)

enter image description here

最佳答案

存在一些问题,主要是与您的 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/

相关文章:

c# - 包含泛型的类型的 BsonClassMap

c# - 使用 iTextSharp HTMLWorker 在 HTML 中设置新页面(html 到 pdf)

string - 更改/更改单元格值的第 N 个元素 Excel VBA

c# - 使用 InvariantCultureIgnoreCase 而不是 ToUpper 进行不区分大小写的字符串比较

java - 验证金额应为整数类型的方法返回类型

c - C 中 char[] 和 char* 的区别

c# - centos 8 中 docker build net core 5.0 报错 NET SDK is not installed

c# - 关闭 SQLiteAsyncConnection

c# - 从客户端 C# 连接到多个 TCP 服务器

python - 如何在 Ruby 中实现类似 Python 的字符串剥离?