繁体   English   中英

循环遍历数组并找到部分字符串

[英]loop through an array and find partial string

如果我有阵列

array [0] =“jack”; array [1] =“jill”; array [2] =“lisa”; array [2] =“jackie”;

我想找到所有带有“ack”的元素。

在这种情况下它会返回

“杰克”,“杰基”。

这样做的最快方法是什么?

array.Where(s => s.Contains("ack"));

(高兴地忽略任何本地化/字符串排序/区分大小写问题。)

这应该比LINQ解决方案快一点。

var list = new List<string>();
foreach(string s in array)
{
    if ((s ?? "").Contains("ack"))
    {
        list.Add(s);
    }
}

我真的不知道C#。 这是伪代码中的基本低级方法:

function boolean contains_string(string haystack, string needle)
  int needleIndex
  int haystackIndex
  for haystackIndex from 0 to haystack.length-needle.length
    for needleIndex from 0 to needle.length
      if haystack[haystackIndex+needleIndex] != needle[needleIndex]
        break
      end if
    end for
    if needleIndex == needle.length-1
      return TRUE
    end if
  end for
  return FALSE
end function

for each element in array
  if contains_string(element, "ack")
    new_array.push element
  end if
end for

几乎肯定包含错误。

我相信这应该比LINQ解决方案更快。

IEnumerable<string> Containing(string[] xs, string sub) {
  foreach(string s in array)
  if (s.Contains(sub))
    yield return s;
}

我假设在xs没有空字符串。

暂无
暂无

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

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