当字符串由多个 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 NULNULNUL

CCCCNULNULNUL

进入这个:

{"AAA","BBB","CCC"}

当字符串由多个 null 分隔时,将字符串解析为数组

只是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);

派对有点晚了,但这很好用。