简体   繁体   English

C#字符串。包含使用变量

[英]C# string.Contains using variable

string[] pullspec = File.ReadAllLines(@"C:\fixedlist.txt");
foreach (string ps in pullspec)
{
    string pslower = ps.ToLower();
    string[] pslowersplit = pslower.Split('|');
    var keywords = File.ReadAllLines(@"C:\crawl\keywords.txt");
    if (pslower.Contains("|"))
    {
        if (pslower.Contains(keywords))
        {
            File.AppendAllText(@"C:\" + keyword + ".txt", pslowersplit[1] + "|" + pslowersplit[0] + "\n");
        }
    }
}

This doesn't compile because of pslower.Contains(keywords) but I'm not trying to do 100 foreach loops. 由于pslower.Contains(keywords)pslower.Contains(keywords)无法编译,但我没有尝试执行100个foreach循环。

Does anybody have any suggestions? 有人有什么建议吗?

使用LINQ:

if (keywords.Any(k => pslower.Contains(k)))

You have a collection of keywords, and you want to see if any of them (or all of them?) are contained in a given string. 您有一组关键字,并且想要查看给定的字符串中是否包含任何关键字(或所有关键字?)。 I don't see how you would solve this without using a loop somewhere, either explicit or hidden in some function or linq expression. 我不明白如果不在某个函数或linq表达式中显式或隐藏地使用循环,如何解决此问题。

Another solution - create a String[]of the keywords and then string[] parts = pslower.Split(yourStringArray, StringSplitOptions.None); 另一个解决方案-创建关键字的String [],然后创建string[] parts = pslower.Split(yourStringArray, StringSplitOptions.None); - if any of your strings appear then parts.Length > 1. You won't easily get your hands on the keywords this way, tho'. -如果出现任何字符串,则显示part.Length> 1.不会轻易通过这种方式使用关键字。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM