我正在使用StreamReader
从文本文件中读入字符串数组text[]
。文本文件中的一行作为"\0"
在位置1 - >中读入。阵列中的20个。我将如何检测此空字符并忽略此行。
代码示例:
StreamReader sr = new StreamReader(Convert.ToString(openFileDialog1.FileName));
while (!sr.EndOfStream)
{
string l= sr.ReadLine();
string[] parsedLine = l.Split(new char[] { '=' },StringSplitOptions.RemoveEmptyEntries);
// Not working:
if (parsedLine.Length == 0)
{
MessageBox.Show("Ignoring line");
}
任何帮助都会很棒!
答案 0 :(得分:2)
假设你的意思是一个带有ascii代码的字符:0
if (parsedLine.Length == 0 || parsedLine[0] == '\0')continue;
修改强> 如果parsedLine是一个字符串,但是对于代码中的解析,上面的代码将起作用:
string[] parsedLine = l.Split(new char[] { '=' },StringSplitOptions.RemoveEmptyEntries)
.Where(s=>s.Length != 1 || s[0] != '\0').ToArray();
答案 1 :(得分:1)
使用内置的String.IsNullOrEmpty()
方法:
if (!string.IsNullOrEmpty(l))
{
// your code here
}
答案 2 :(得分:1)
如果该行包含空字符,则忽略该行。
string l = sr.ReadLine();
if (string.IsNullOrEmpty(l) || l[0] == '\0'))
continue;
...
答案 3 :(得分:1)
这是一个应该有效的linq解决方案:
StreamReader sr = new StreamReader(Convert.ToString(openFileDialog1.FileName));
while (!sr.EndOfStream)
{
string l= sr.ReadLine();
bool nullPresent = l.ToCharArray().Any(x => x.CompareTo('\0') == 0);
if (nullPresent)
{
MessageBox.Show("Ignoring line");
}
else
{
// do other stuff
}
}
答案 4 :(得分:0)
string l= sr.ReadLine();
if (l == "") {
MessageBox.Show("Ignoring line");
continue;
}