【发布时间】:2018-07-07 17:41:22
【问题描述】:
我在一个 List<> 中有来自不同国家/地区的约会。我正在尝试获取在第二个逗号之前包含相同字符的两条记录,并将这两项替换为新的。
例子:
从这里:
18/04/2014,Good Friday,England and Wales
18/04/2014,Good Friday,Scotland
进入这个:
18/04/2014,Good Friday,"England, Wales and Scotland"
请注意,列表中可能有多种情况,如上例。我已经设法在第二个逗号之前得到了所有东西:
splitSubstring = line.Remove(line.LastIndexOf(','));
我尝试了以下方法,但它显然存在缺陷,因为即使找到匹配项也不会删除两条记录:
foreach (var line in orderedLines)
{
if (splitSubstring == line.Remove(line.LastIndexOf(',')))
{
//Replace if previous is match here
}
splitSubstring = line.Remove(line.LastIndexOf(','));
File.AppendAllText(correctFile, line);
}
【问题讨论】:
-
旁注:熟悉“C# LINQ 集合操作”(搜索它),对于以后的帖子,避免添加诸如“谢谢”和“搜索了很多”之类的文本 - meta.stackoverflow.com/search?q=remove+fluff。如果你想展示你的努力 - 显示你尝试过的代码(这篇文章中的一个与问题无关)。
-
您真的想要
18/04/2014,Good Friday,England, Wales and Scotland还是18/04/2014,Good Friday,"England, Wales and Scotland"更好(因为它是有效的CSV)? -
对不起,我错过了引号,会更新
-
@Enigmativity 你确实是对的——不知何故我读到 OP 有两个列表......这可能只是
.GroupBy但解析/合并代码很痛苦,特别是因为常规String.Join不起作用... -
@Alz_dev - 你的源文件是否也已经包含引号?