鉴于以下内容 strings = new string[] { "a", "a", "a", "b", "b", "c", "c", "c", "c", "d" };
如何替换重复的项目以产生以下输出: { "a", "Duplicate", "Duplicate", "b", "Duplicate", "c", "Duplicate", "Duplicate", "Duplicate", "d" }
对于这样的事情,特别是如果你打算修改数组而不是产生一个新的序列,我宁愿一个老式的循环.在我看来,它更明显,更"聪明",更容易理解.如果你有类似的看法,循环很容易写.创建一个包含不同项目的集合,并替换已添加到集合中的项目.
var set = new HashSet<string>();
for (int i = 0; i < strings.Length; i++)
{
if (set.Contains(strings[i]))
{
strings[i] = "Duplicate";
}
else
{
set.Add(strings[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
根据您的输入,您的输出将是:
a
Duplicate
Duplicate
b
Duplicate
c
Duplicate
Duplicate
Duplicate
d
Run Code Online (Sandbox Code Playgroud)