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

时间:2009-10-19 01:10:22

标签: c# arrays string

如果我有阵列

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

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

在这种情况下会返回

“jack”,“jackie”。

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

4 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我真的不知道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

几乎肯定包含错误。

答案 3 :(得分:0)

我认为这应该比LINQ解决方案更快。

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

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