c# - 如何在不删除空行的情况下删除重复字符串?C#
问题描述
我正在使用内置函数来删除重复行,但函数将空白行也视为重复行。谁能帮我找到我错的地方?这是我的代码:
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(不需要)
解决方案
有一些问题,主要是你的分裂。您撰写input__txt
包含“\n”,但后来尝试拆分Environment.NewLine
,它本身就是“\n\r”。因此,分裂不会如你所愿。
让我们考虑一下:
String input_txt = "A \n A \n B \n D \n A \n E";
其次,即使您在“\n”上进行拆分,结果也会有 2 个 A 条目,即“A”和“A”,因为您没有修剪任何内容。
我的建议是拆分超过 1 个模式并删除空条目。要么您还需要 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
推荐阅读
- excel - 如何根据 excel 或 google 表格中的另一个列表对列表进行排序?
- spring-boot - Open API 规范中的字段级自定义评估消息
- vba - Powerpoint 更改链接
- autocomplete - MUI AutoComplete:当有两个“全选”选项时,如何使“取消选择”工作?
- javascript - 如何从 Promise 中提取价值并在 React 中显示?
- php - 如何在单击 save_progress 按钮(wordpress)时更新 acf 文件?
- electron - 在 MacOs Electron BrowserWindow.LoadURL 上不起作用
- repo - 如何理解 repo xml 中的“所有者”标签
- android - 未处理的异常:未处理的错误 Null 检查运算符用于空值,发生在 Flutter 中的“AuthBloc”实例中
- javascript - 使用 JavaScript 创建的 Svelte 组件不接收响应式更新