if i have array
array[0] = "jack"; array[1] = "jill"; array[2] = "lisa"; array[2] = "jackie";
and i want to find all elements with "ack" in it.
in this case it would return
"jack", "jackie".
what is the fastest way of doing this?
array.Where(s => s.Contains("ack"));
(高兴地忽略任何本地化/字符串排序/区分大小写问题。)
This should be a little bit faster than a LINQ solution.
var list = new List<string>();
foreach(string s in array)
{
if ((s ?? "").Contains("ack"))
{
list.Add(s);
}
}
I don't really know C#. Here is a basic low-level approach in pseudo-code:
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
Almost certainly contains bugs.
I believe this should be faster than the LINQ solution.
IEnumerable<string> Containing(string[] xs, string sub) {
foreach(string s in array)
if (s.Contains(sub))
yield return s;
}
I am assuming no null strings in xs
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.