如何检查文件行是否只包含搜索到的字符串?

时间:2018-02-10 11:13:59

标签: c#

假设我有一个包含多行的文件:

En;15;
Vu;
US;32;

我需要检查字符串VU是否包含在内,所以我做了:

string text = @"En;15;
Vu;
US;32;"

var exist = text.Contains("Vu");

这将返回true,但我还需要检查Vu的行是否仅包含Vu或其他内容作为其他行。我怎样才能做到这一点?感谢。

更新

如果该行还包含其他元素则应返回false

3 个答案:

答案 0 :(得分:0)

假设在你的输入中有一条"换行符"是" \ n",假设一行中的东西被";"分开,那么:

1)将文本分成单独的行 2)对于每一行,将该行分成由";";";分隔的片段 3)对于每个折线,检查每个部分,看看是否有Vu 4)..如果是的话,嘿,你发现它了 5)..如果该断线只有1件,嘿,这是单个Vu

代码:

1)     @"文本     那     具有     line" .Split(" \ n")==> 4行数组

2)     " linethat; has; pieces" .Split(";")===>数组3件

3)"每个"是一个foreach循环。你需要一个用于线条,一个用于零件。一个在另一个里面。

4)拆分删除分隔符,所以&#34 ;;"不会出现在一块中,所以if(piece == "Vu")

5)"件"是字符串数组,因此if(pieces.Length==1)表示该行有一个单件

现在你有了所有的位,只需正确使用它们。

答案 1 :(得分:0)

将字符串拆分为数组,并且可以使用Split()方法将所有行分隔为字符串数组中的单独索引 使用代表新行的分隔符'\ n':

static void Main(string[] args)
{
    string stringfromfile = @"En;
                            15;
                            Vu;
                            US;
                            32;";

    string[] ar = stringfromfile.Split('\n');

    // remove ";" character and fix white space for safety
    for (int i = 0; i < ar.Length; i++)
    {
        ar[i] = ar[i].Replace(";","").Trim();
    }

    if (ar.Contains("Vu"))
    {
        Console.WriteLine("TRUE");
    }
    else
    {
        Console.WriteLine("FALSE");
    }

    foreach (var itm in ar)
    {
        Console.WriteLine(itm);
    }

    Console.ReadLine();
}

答案 2 :(得分:0)

您可以尝试非常简单地搜索“\ nVu \ n”,这样看起来会有点像:

var exist = text.Contains("\nVu\n");

除了第一行和最后一行的特殊情况之外,这将找到所有情况,并且比将字符串拆分为数组更有效。

正如@quetzalcoatl所说

  

..第一行和最后一行可以被.StartsWith(“Vu \ n”)和.EndsWith(“\ nVu”)覆盖..