我正在编写一个程序,它将从AS400获取数据并需要读取文本的第一行以确定文件的位置。来自AS400的数据中包含许多不可打印的字符。
这是我的工作代码:
//LINQ to read first line and find what I need
var lines = File.ReadAllLines(as400file);
foreach (string line in lines)
{
//Regex the AS400 garbage out of there...
string replaced = Regex.Replace(line, @"[^\u0000-\u007F]", String.Empty);
/* ^ = not
* \u0000 - \u007F is the first 127 chars of UTF-8
* So this replaces all non ascii chars with an empty string
*/
//Rest of program code
}
但是我真的只想要文件的第一行而不是每一行。我似乎无法想到一种方法来获得第一线,而我对linq没有经验。有什么指示或帮助吗?
答案 0 :(得分:1)
var line = File.ReadAllLines(as400file).First(line => !string.IsNullOrWhitespace(line));
string replaced = Regex.Replace(line, @"[^\u0000-\u007F]", String.Empty);
是......你想要的只是什么?
答案 1 :(得分:1)
尝试以下操作,它将从文件中读取一行。
string line;
using (var file = new StreamReader(as400file))
{
line = file.ReadLine();
}
string replaced = Regex.Replace(line, @"[^\u0000-\u007F]", String.Empty);
答案 2 :(得分:0)
作为Alex答案的替代方案,您可以使用StreamReader获取第一行:
using (var reader = new System.IO.StreamReader(as400File))
{
var line = reader.ReadLine();
string replaced = Regex.Replace(line, @"[^\u0000-\u007F]", String.Empty);
}
答案 3 :(得分:0)
感谢Alex的帮助,这是我的工作代码:
//LINQ to read first line and find what I need
var lines = File.ReadAllLines(testfile).First(line => !string.IsNullOrWhiteSpace(line));
//Regex the AS400 garbage out of there...
string replaced = Regex.Replace(lines, @"[^\u0000-\u007F]", String.Empty);
/* ^ = not
* \u0000 - \u007F is the first 127 chars of UTF-8
* So this replaces all non ascii chars with an empty string
*/