从字符串数组中删除空行

时间:2015-03-08 19:14:17

标签: c# arrays

我正在尝试从文本文件中获取包含单个单词的字符串数组。但是数组中填充了一些空行。任何想法如何在没有那些空行的情况下制作字符串数组?

WebClient client = new WebClient();
Stream stream = client.OpenRead("https://gist.githubusercontent.com/Quackmatic/f8deb2b64dd07ea0985d/raw/macbeth.txt");
StreamReader reader = new StreamReader(stream);
string[] content = reader.ReadToEnd().Split('?', '!', ' ', '\n', '[', ']', '.');

for (int i = 0; i < 5; i++)
{
    Console.WriteLine(content[i]);
}
Console.ReadLine();

2 个答案:

答案 0 :(得分:3)

您可以尝试Split()方法重载,将StringSplitOptions作为第二个参数,值为RemoveEmptyEntries。然后返回值不包含包含空字符串的数组元素。

var result = reader.ReadToEnd()
                   .Split(new[] {'?', '!', ' ', '\n', '[', ']', '.'} , StringSplitOptions.RemoveEmptyEntries);

顺便说一句,在此之后,您可以为所有元素调用Trim(),因为RemoveEmptyEntries不认为字符串" "为空。因此,如果要丢弃空字符串,可以将其添加到代码中:

var result = reader.ReadToEnd()
                   .Split(new[] {'?', '!', ' ', '\n', '[', ']', '.'} , StringSplitOptions.RemoveEmptyEntries)
                   .Where(x => !string.IsNullOrWhiteSpace(x.Trim())
                   .ToArray();

答案 1 :(得分:0)

当您致电Split时,您可以使用other answer中详述的选项进行操作。但是,如果您不想使用linq从数组中删除空行:

content = content.Where(s => s != "").ToArray();