我有这个问题,我正在使用StringReader从文本框中查找特定的单词,到目前为止,我的工作效果很好,但是我需要找到一种方法,在每一行中根据字符串数组检查特定的单词。
以下代码起作用:
string txt = txtInput.Text;
string user1 = "adam";
int users = 0;
int systems = 0;
using (StringReader reader = new StringReader(txt))
{
while ((txt = reader.ReadLine()) != null)
{
if (txt.Contains(user1))
{
users++;
}
}
}现在,我已经创建了一个string来存储多个字符串,但是方法包含似乎只接受一个字符串。
string[] systemsarray = new string[] { "as400", "x500", "mainframe" };
if(txt.Contains(systemsarray))
{
systems++;
}
// error message: cannot convert from string[] to string有没有人知道如何做到这一点,或者有什么方法来改进它?
提前谢谢。
发布于 2013-08-05 19:06:42
如果您正在寻找这些单词中的任何一个,请尝试:
if(systemsarray.Any(word => txt.Contains(word)))
{
users++;
}发布于 2013-08-05 19:07:30
为什么不为自己编写一个扩展方法来完成这个任务呢?
public static class StringExtensionMethods
{
public static bool ContainsAny(this string self, params string[] toFind)
{
bool found = false;
foreach(var criteria in toFind)
{
if (self.Contains(criteria))
{
found = true;
break;
}
};
return found;
} // eo ContainsAny
}用法:
string[] systemsarray = new string[] { "as400", "x500", "mainframe" };
if(txt.ContainsAny(systemsarray))
{
systems++;
}
// error message: cannot convert from string[] to string发布于 2013-08-05 19:08:03
您需要从数组中提取每个项:
foreach (string item in systemsarray)
{
if(txt.Contains(item))
{
systems++;
}
}https://stackoverflow.com/questions/18065736
复制相似问题