当字符串由多个 null 分隔时,将字符串解析为数组
本文关键字:字符串 数组 分隔 null | 更新日期: 2023-09-27 18:36:46
我有一个文件,在记事本++中打开它后,它似乎包含由3个空字符分隔的字符串。我试过了:
using (StreamReader _sr = new StreamReader(FilePath)){
string _stuff = _sr.ReadToEnd();
string[] _test = _stuff.Split(new char[]{(char) 0},3);
}
但是_test
,这是拆分的结果,显示了字符串的大部分(包括由 3 个空值分隔的字符串)。
我该如何转动这个:
AAA NULNULNUL BBB NULNULNULCCCCNULNULNUL
进入这个:
{"AAA","BBB","CCC"}
只是String.Split
:
String source = "AAA'0'0'0BBB'0'0'0CCCC'0'0'0";
String[] result = source.Split(
new Char[] { ''0' },
StringSplitOptions.RemoveEmptyEntries);
测试:
// AAA, BBB, CCCC
Console.Write(String.Join(", ", result));
如果您只想按三倍 NUL 拆分:
String[] result = source.Split(
new String[] { "'0'0'0" },
StringSplitOptions.RemoveEmptyEntries);
您正在解析带有控制字符的字符串。 NUL
是第 0 个控制字符。您可以使用以下内容:
var _test = _stuff.Split(new []{(char) 0});
_stuff.Split("NUL").Where(x=> !string.IsNullOrEmpty(x)).ToArray()
这样,您就不关心 NUL 重复次数。
编辑感谢 &fubo -> _stuff.Split("NUL", StringSplitOptions.RemoveEmptyEntries).ToArray()
如果 NULL 表示空字符,则可以使用"''0"
var cleanArray = Regex.Replace(source, @"'0+", " ")
.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
派对有点晚了,但这很好用。