当字符串由多个空值

时间:2016-02-29 12:55:12

标签: c# string

我有一个文件,在Notepad ++中打开后看起来它包含由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 CCCC的 NULNULNUL

进入这个:

  

{ “AAA”, “BBB”, “CCC”}

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

_stuff.Split("NUL").Where(x=> !string.IsNullOrEmpty(x)).ToArray()

这样你就不在乎NUL重复次数了。

感谢& fubo - > _stuff.Split("NUL", StringSplitOptions.RemoveEmptyEntries).ToArray()

如果NULL表示null char,则可以使用'\ 0'

答案 2 :(得分:0)

您正在使用控制字符解析字符串。 NUL是0 th 控制字符。您可以使用以下内容:

var _test = _stuff.Split(new []{(char) 0});

答案 3 :(得分:0)

var cleanArray = Regex.Replace(source, @"\0+", " ")
                          .Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);

参加聚会的时间已经很晚了,但这样做很好。