首页 > 解决方案 > 如何在统一的字符串数组列表中查找包含?

问题描述

为什么只包含检查列表中的最后一个数组?当我尝试输入 test1 结果“未找到”。尝试如何包含数组列表中的字符串。

public class FindContainsText : MonoBehaviour
{
    public Text text;
    public InputField intext;

    List<string> guess = new List<string>();
    private string answer;
    void Start()
    {
        guess.Add("test1");
        guess.Add("test2");

        answer="ok";
    }

    void Update()
    {
        foreach (string x in guess)
        {
            if (intext.text.ToLower().Contains(x.ToLower()))
            {
                text.text = answer;
            }
            else
            {
                text.text = "not found";
            }
        }
    }
}

标签: c#arraysstringlistunity3d

解决方案


当你找到它时,你需要“突破”foreach 循环。否则,您将继续循环遍历元素,因此除非最后一个元素是它,否则它将“找不到”。

foreach (string x in guess)
{
    if (intext.text.ToLower().Contains(x.ToLower()))
    {
        text.text = answer;
        break;
    }
    else
    {
        text.text = "not found";
    }
}

您也可以在这里使用 System.Linq 来帮助您:将它放在文件的顶部。

using System.Linq;

然后使用 Linq 提供的 Contains 扩展方法:

if (guess.Contains(intext.text, StringComparison.OrdinalIgnoreCase))
{
    text.text = answer;
}
else
{
    text.text = "not found";
}

推荐阅读