替换重复序列

Hir*_*Yui 4 c# linq

是否可以使用linq替换每个连续的重复项?我尝试使用小组没有成功。基本上,我需要得到以下结果:

string[] arr = new [] { "a", "a", "a", "b", "b", "b", "b", "c", "c", "c", "a", "a" }; // input
string[] res = new [] { "a", "R", "R", "b", "R", "R", "R", "c", "R", "R", "a", "R" }; // output
Run Code Online (Sandbox Code Playgroud)

Sel*_*enç 8

Select 方法有一个需要使用索引的重载,您可以使用它来检查上一个项目:

res = arr.Select((x, idx) => idx != 0 && arr[idx - 1] == x ? "R" : x).ToArray();
Run Code Online (Sandbox Code Playgroud)

  • @tukaef别那么挑剔,只要简单地调用`.ToArray`就可以将其转换回`string []`。这是一个很好的答案 (3认同)