拆分然后逐步加入字符串 - C#Linq

Ins*_*Man 11 c# linq

这是我的字符串:

www.stackoverflow.com/questions/ask/user/end

我把它拆分/成一个单独的单词列表:myString.Split('/').ToList()

输出:

www.stackoverflow.com
questions
ask
user
end
Run Code Online (Sandbox Code Playgroud)

我需要重新加入字符串以获得这样的列表:

www.stackoverflow.com
www.stackoverflow.com/questions
www.stackoverflow.com/questions/ask
www.stackoverflow.com/questions/ask/user
www.stackoverflow.com/questions/ask/user/end
Run Code Online (Sandbox Code Playgroud)

我认为linq聚合但似乎它不适合这里.我想通过linq完成这一切

Kam*_*ski 13

您可以尝试使用foreach迭代它

var splitted = "www.stackoverflow.com/questions/ask/user/end".Split('/').ToList();
string full = "";
foreach (var part in splitted)
{
    full=$"{full}/{part}"
    Console.Write(full);
}
Run Code Online (Sandbox Code Playgroud)

或者使用linq:

var splitted = "www.stackoverflow.com/questions/ask/user/end".Split('/').ToList();
var list = splitted.Select((x, i) => string.Join("/", a.Take(i + 1)));
Run Code Online (Sandbox Code Playgroud)

  • @Nofuzy你*需要*使用Linq的任何理由? (3认同)

Dmi*_*nko 7

Linq有副作用:

  string prior = null;

  var result = "www.stackoverflow.com/questions/ask/user/end"
    .Split('/')
    .Select(item => prior == null
       ? prior = item
       : prior += "/" + item)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

我们把它打印出来

  Console.WriteLine(string.Join(Environment.NewLine, result));
Run Code Online (Sandbox Code Playgroud)

结果:

www.stackoverflow.com
www.stackoverflow.com/questions
www.stackoverflow.com/questions/ask
www.stackoverflow.com/questions/ask/user
www.stackoverflow.com/questions/ask/user/end
Run Code Online (Sandbox Code Playgroud)