如何检查我的变量是否包含字符串

时间:2018-04-05 18:14:28

标签: c#

在我的c#程序中,我正在从文本文件中读取行,并想检查我读入的行是否包含字符串“EHRS”,如果是,我想将该行放入数组,如果没有,我想在下一行阅读。当我运行它时,我收到一个错误,告诉我在使用contains函数的行发生了一个未处理的类型'System.NullReferenceException'的异常。

这就是我所拥有的:

string[] concArray = new string[numLinesConcYr];

using (var sr = new StreamReader(mydocpath + @"\concYrLines.txt"))
{
    for (int i = 0; i < numLinesConcYr; i++)
    {
        concYrLine = sr.ReadLine();
        if (concYrLine.Contains("EHRS") == true)
        {
            concArray[i] = concYrLine;
        }
        else
        {
            concYrLine = sr.ReadLine();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

来自StreamReader.ReadLine

的文档
  

返回值   键入:System.String   输入流中的下一行,如果到达输入流的末尾,则为 null

所以null是预期的,你必须对它实施防御。

concYrLine = sr.ReadLine();
if (!string.IsNullOrempty(concYrLine) && concYrLine.Contains("EHRS"))
{
}

答案 1 :(得分:0)

每次读一行时,我的行都没有内容。对您已读取的行执行.Contains("")检查取决于作为字符串实例返回的变量。对concYrLine方法的.Contains() proir执行空值检查。像这样:

for (int i = 0; i < numLinesConcYr; i++)
{
    concYrLine = sr.ReadLine();
    if (!String.IsNullOrEmpty(concYrLine) && concYrLine.Contains("EHRS") == true)
    {
        concArray[i] = concYrLine;
    }
    else
    {
        concYrLine = sr.ReadLine();
    }
}