我正在尝试从文本文件中获取包含单个单词的字符串数组。但是数组中填充了一些空行。任何想法如何在没有那些空行的情况下制作字符串数组?
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();
答案 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();