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,但我不知道如何在当前重复的子串中得到起始位置.
你可以只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)
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |