Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数组中删除空白值,并建议更好的方法来读取由'|';_C#_Asp.net - Fatal编程技术网

C# 从数组中删除空白值,并建议更好的方法来读取由'|';

C# 从数组中删除空白值,并建议更好的方法来读取由'|';,c#,asp.net,C#,Asp.net,我试图从文本文件中获取值,其中的条目使用“”分隔。我使用string.Split方法获取值。但在某些地方,分隔符会连续出现多次,如“|124;|”,因此,在数组中插入空格时,我应该如何从数组中删除这些空元素,或者是否有任何有效的技术可以从由“|”分隔的文本文件中读取值。下面是我的代码和数组值的屏幕截图 var reader = new StreamReader(File.OpenRead(@"d:\er.txt")); while (!reader.EndOfStream)

我试图从文本文件中获取值,其中的条目使用“”分隔。我使用string.Split方法获取值。但在某些地方,分隔符会连续出现多次,如“|124;|”,因此,在数组中插入空格时,我应该如何从数组中删除这些空元素,或者是否有任何有效的技术可以从由“|”分隔的文本文件中读取值。下面是我的代码和数组值的屏幕截图

 var reader = new StreamReader(File.OpenRead(@"d:\er.txt"));
        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine().Trim();
            var values = line.Split('|');
            string[] ee = values;

        }

有谁能推荐一种更好的方法来读取由“|”分隔的文本文件中的数据吗?

有一个采用枚举值的重载:

var values = line.Split(new char[]{'|'}, StringSplitOptions.RemoveEmptyEntries);
这将删除空条目。

您可以在阵列上使用吗

var values = line.Split("|").Where(v => !string.IsNullOrEmpty(v)); 

看,下面的代码行,你可以这样做

   var values = line.Split('|');
    List<string> FilteredValues = new List<string>();
    foreach (var value in values)
    {
        if (value != "")
        {
            FilteredValues.Add(value);
        }
    }
var values=line.Split(“|”);
List FilteredValues=新列表();
foreach(值中的var值)
{
如果(值!=“”)
{
FilteredValues.Add(值);
}
}

或者,您可以使用trim()函数!?

进一步了解Oded的答案,这是正确的语法

 var reader = new StreamReader(File.OpenRead(@"d:\er.txt"));
      while (!reader.EndOfStream)
      {
        var line = reader.ReadLine().Trim();
        var values =  line.Split(new char[]{'|'}, StringSplitOptions.RemoveEmptyEntries);
        string[] ee = values;

      }

该死的,比我快(事实上,系统不允许我提交,因为它是一个字符对一个字符相同的)我会放弃我的答案,因为它会把线程弄得乱七八糟。@marcgravel-char-for-char?哇。我猜他们说的一百万只猴子是真的;)@Oded这里我缺少什么var values=line.Split(“|”,StringSplitOptions.RemoveEmptyEntries);与“string.Split(params char[])匹配的最佳重载方法具有一些无效属性arguments@Oded,当我尝试您在这里给出的代码部分时,它会显示某种类型的错误消息,如:“与'string.Split(params[]char)匹配的最佳重载方法”“有一些无效的论点”。为什么呢?在很多情况下,它可以让你的生活更轻松,但在这种情况下,第一个答案要好得多!如果你发布一些linq教程的链接,这将对我有帮助。谢谢你,我做了……点击我帖子中的“linq”字。非常感谢!很高兴我能在这件事上提供帮助。