首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# StringReader类

C# StringReader类
EN

Stack Overflow用户
提问于 2013-08-05 19:03:22
回答 4查看 1.9K关注 0票数 6

我有这个问题,我正在使用StringReader从文本框中查找特定的单词,到目前为止,我的工作效果很好,但是我需要找到一种方法,在每一行中根据字符串数组检查特定的单词。

以下代码起作用:

代码语言:javascript
复制
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来存储多个字符串,但是方法包含似乎只接受一个字符串。

代码语言:javascript
复制
string[] systemsarray = new string[] { "as400", "x500", "mainframe" };

if(txt.Contains(systemsarray))
{
    systems++;
}
// error message: cannot convert from string[] to string

有没有人知道如何做到这一点,或者有什么方法来改进它?

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-05 19:06:42

如果您正在寻找这些单词中的任何一个,请尝试:

代码语言:javascript
复制
if(systemsarray.Any(word => txt.Contains(word)))
{
    users++;
}
票数 9
EN

Stack Overflow用户

发布于 2013-08-05 19:07:30

为什么不为自己编写一个扩展方法来完成这个任务呢?

代码语言:javascript
复制
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    
}

用法:

代码语言:javascript
复制
string[] systemsarray = new string[] { "as400", "x500", "mainframe" };

if(txt.ContainsAny(systemsarray))
{
    systems++;
}
// error message: cannot convert from string[] to string
票数 5
EN

Stack Overflow用户

发布于 2013-08-05 19:08:03

您需要从数组中提取每个项:

代码语言:javascript
复制
foreach (string item in systemsarray)
{
 if(txt.Contains(item))
 {
    systems++;
 }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18065736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档