Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET字符串包含字符串[]_C# - Fatal编程技术网

C# .NET字符串包含字符串[]

C# .NET字符串包含字符串[],c#,C#,我有一个小问题,把这句话放在一起,任何帮助都会很棒 string betaFilePath = @"C:\resultsalpha.txt"; StringBuilder sb = new StringBuilder(); using (FileStream fs = new FileStream(betaFilePath, FileMode.Open)) using (StreamReader rdr = new StreamReader((fs))) { while (!rdr.En

我有一个小问题,把这句话放在一起,任何帮助都会很棒

string betaFilePath = @"C:\resultsalpha.txt";
StringBuilder sb = new StringBuilder();
using (FileStream fs = new FileStream(betaFilePath, FileMode.Open))
using (StreamReader rdr = new StreamReader((fs)))
{
    while (!rdr.EndOfStream)
    {
        string betaFileLine = rdr.ReadLine();
        {
            string[] onlythese = {@"apple/",@"aee/",@"www/",@"blk/",@"art/",@"purp/",@"ora/",@"red/",@"brd/",@"biek/",@"biz/"};
            if (betaFileLine.Contains(onlythese))
            {
                File.AppendAllText(@"C:\testtestest.txt", betaFileLine);

            }
        }
    }

错误:参数“1”:无法从“string[]”转换为“string”->if(betaFileLine.Contains(onlythes))

您无法将数组传递到
字符串。Contains
-您需要在字符串[]中循环并检查每个字符串,或者使用LINQ:

if(onlythese.Any(a => betaFileLine.Contains(a)))
试一试

您需要“使用System.Linq;”

快去营救

if(onlythese.Any(str => betaFileLine.Contains(str)))
{
    // ...
}

只需检查其中的每一项:

bool isOK = false;

foreach (string current in onlythese)
  if (betaFileLine.Contains(current))
  {
     isOK = true;
     break;
  }

if (isOK)
{
   File.AppendAllText(@"C:\testtestest.txt", betaFileLine);
}

包含接受单个字符串作为参数而不是字符串数组

一种简单的方法是循环遍历onlyThese并将contains语句嵌套在其中:

string[] onlythese = {@"apple/",@"aee/",@"www/",@"blk/",@"art/",@"purp/",@"ora/",@"red/",@"brd/",@"biek/",@"biz/"};
foreach(string onlyThis in onlythese) 
{
    if (betaFileLine.Contains(onlyThis))
    {
        File.AppendAllText(@"C:\testtestest.txt", betaFileLine);
        break;
    }
}

如果您有Framework 3.5,请使用LINQ

if(onlythese.Any(s => betaFileLine.Contains(s)))
{
    File.AppendAllText(@"C:\testtestest.txt", betaFileLine);
}
如果不是,则必须循环每个字符串

bool match = false;

foreach(String thisString in onlyThese)
{
    if(betaFileLine.Contains(thisString)
    {
        match = true;
        break;
    }
}

if(match)
    File.AppendAllText(@"C:\testtestest.txt", betaFileLine);
或者使用正则表达式

string onlyThese = @"apple/|aee/|www/|blk/|art/|purp/|ora/|red/|brd/|biek/|biz/";
if (Regex.IsMatch(betaFileLine, onlyThese))
    File.AppendAllText(@"C:\testtestest.txt", betaFileLine);

你想用什么来定义包含任何字符串的行,或者包含所有字符串的行?别忘了正则表达式:)这可能会成为一条代码线,呵呵。是的,保留我的重复答案毫无意义。这将为每一个匹配添加一行,而不是任何匹配。
string onlyThese = @"apple/|aee/|www/|blk/|art/|purp/|ora/|red/|brd/|biek/|biz/";
if (Regex.IsMatch(betaFileLine, onlyThese))
    File.AppendAllText(@"C:\testtestest.txt", betaFileLine);