以交替顺序操作字符串

Dr.*_*ail 4 c# linq string

我有一个字符串

string value = "123456789";
Run Code Online (Sandbox Code Playgroud)

现在我需要按以下方式重新排列字符串:

123456789
1       right 
12      left 
312     right 
3124    left 
53124   right 
...
975312468 result
Run Code Online (Sandbox Code Playgroud)

是否有一个花哨的linq one liner解决方案来解决这个问题?

我目前的(工作但不太好看)解决方案:

string items = "abcdefgij";
string result = string.Empty;
for (int i = 0; i < items.Length; i++)
{
    if (i % 2 != 0)
    {
        result = result + items[i];
    }
    else
    {
        result = items[i] + result;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ren*_*ogt 8

string value = "123456789";
bool b = true;
string result = value.Aggregate(string.Empty, (s, c) =>
{
    b = !b;
    return b ? (s + c) : (c + s);
});    
Run Code Online (Sandbox Code Playgroud)

我实际上不喜欢LINQ语句中的局部变量,但在这种情况下b有助于交替方向.(@klappvisor展示了如何没有生活b).

  • 即使我确实喜欢你得到的结果相同,我认为问题中的代码更具可读性. (2认同)