验证一个字符串数组的所有项都出现在另一个字符串数组中的最佳算法

时间:2013-04-17 13:59:37

标签: c# indexof arrays

我有两个字符串数组,一个包含文件名,如file1.docx,file2.docx,file3.docx,另一个数组来自UI控件,必须像第一个一样但添加了日期。我需要验证第一个数组的所有项都存在于第二个数组中(是第二个数组项字符串的一部分)。

foreach (UITestControl t in children)
{
    Boolean found = false;

    var div = t as HtmlDiv;
    if (div == null) continue;
    String actualText = div.InnerText;

    foreach (string t1 in searchResultNames)
    {
        if (!found)
        {
            if (actualText.IndexOf(t1, StringComparison.InvariantCultureIgnoreCase) >= 0)
            {
                found = true;
                result.AssertTrue(found, t1 + "found in search result");
            }
        }
    }

我使用indexOf方法但是这个代码可能会以某种方式改进吗?

我们的代码中使用的算法结果永远不会失败:)因为如果找到至少一个项目它总是返回true :)然后它只是通过foreach循环找到值设置为true并且一切都很好:)所以我需要更改此代码

1 个答案:

答案 0 :(得分:0)

bool allExist = !firstArray.Except(secondArray).Any()

修改

bool allExist = !firstArray.Except(secondArray, new MyComparer()).Any()

public class MyComparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y)
    {
        return x.StartsWith(y);
    }

    public int GetHashCode(string obj)
    {
        return obj[0].GetHashCode();
    }
}