我的问题很简单。我需要从Windows文本文件中获取所有文本行。 所有行都用\ r \ n符号分隔。我使用String.Split,但它并不酷,因为 它只拆分“一个符号”,留下我需要用选项标记删除的空字符串。有没有更好的办法?
我的实施
string wholefile = GetFromSomeWhere();
// now parsing
string[] lines = operationtext.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
// ok now I have lines array
更新
File.ReadAllXXX在这里没用。考虑GetFromSomeWhere实际上是RegEx,所以在此之后我没有文件。
答案 0 :(得分:15)
您可以使用String.Split
string[] lines = operationtext.Split(new[] { Environment.NewLine },
StringSplitOptions.RemoveEmptyEntries);
,其中包含一系列可用作分隔符的字符串:
string[] lines = File.ReadAllLines(filePath);
当然,如果您已经拥有文件路径,那么使用this overload要简单得多:
{{1}}
答案 1 :(得分:4)
String.Split接受一个字符串(如“\ r \ n”)。不只是一个chararray。
string[] lines = wholetext.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
答案 2 :(得分:4)
您可能会发现简单地使用File.ReadAllLines()或File.ReadLines()
会更容易答案 3 :(得分:3)
您可以使用类似下面的扩展方法,然后您的代码将如下所示:
var lines = operationText.ReadAsLines();
扩展方法实现:
public static IEnumerable<string> ReadAsLines(this string text)
{
TextReader reader = new StringReader(text);
while(reader.Peek() >= 0)
{
yield return reader.ReadLine();
}
}
我猜它不像分裂选项那样高效,但通常非常高效,但如果这不是问题......