从Linq.Repeat中选择Substring

use*_*948 0 c# linq select repeat

我有一个非常长的字符串,在c#看起来像:

String currentStrings = "\\u0000\\u0001\\u0002\\u0003\\u0004"..."\\uFFFF";  //... means repeating
Run Code Online (Sandbox Code Playgroud)

我需要获取每个子字符串的十六进制,例如:

String newString = "00000001000200030004"..."FFFF";
Run Code Online (Sandbox Code Playgroud)

我写了linq:

var newString = String.Join("", Enumerable.Repeat(currentStrings, 16).Select(s => s.Substring(2, 4)));
Run Code Online (Sandbox Code Playgroud)

但它回来了 "00000000000000000000000"..."0000".

我知道,这个的原因 - 它在选择2,但我不知道如何在当前重复的子串中得到起始位置.

Sel*_*enç 7

你可以只Split\u与使用string.Concat将它们串联:

string currentStrings = "\\u0000\\u0001\\u0002\\u0003\\u0004\\uFFFF";
var result = string.Concat(currentStrings.Split(new[] { "\\u" }, 
                                              StringSplitOptions.RemoveEmptyEntries)); 

// output
00000001000200030004FFFF
Run Code Online (Sandbox Code Playgroud)

编辑:获得chars:

var chars = currentStrings
       .Split(new[] { "\\u" }, StringSplitOptions.RemoveEmptyEntries)
       .Select(x => (char) Convert.ToInt32(x, 16))
       .ToList();
Run Code Online (Sandbox Code Playgroud)