CountChars

Return how many times needle is contained in haystack.
 number = <PREFIX>_CountChars(haystack, needle)
== Function Parameters ==
=== Arguments ===
:;haystack: String - The search subject.
:;needle: The string to look for. needle can be a regular expression ('[a-z%s%d]' will count all alphanumeric characters and white spaces)
;Notes
: Arguments are cast into strings before any processing is done.
: The search is not case-sensitive.
=== Returns ===
:;number: Number of times needle is contained in haystack. If needle is not found, returns 0.
== Example ==
 number1 = <PREFIX>_CountChars("World of Warcraft", 'o')
 number2 = <PREFIX>_CountChars("World of Warcraft", 'w[a-z]')
 number3 = <PREFIX>_CountChars("World of Warcraft", 'r[a-z]')
 number4 = <PREFIX>_CountChars("World of Warcraft", 'r[a-z][a-z]')
====Result====
 number1 = 2
 number2 = 2
 number3 = 3
 number4 = 3
==Code==
function <PREFIX>_CountChars (haystack, needle)
 haystack = strlower(tostring(haystack));
 needle = strlower(tostring(needle));
 local ret, pos = 0, 0
 for i = 1, strlen(haystack) do
 local s, e = strfind(haystack, needle, pos)
 if e then
 pos = e
 if s == e then
 pos = pos + 1
 end
 end
 if s and e then
 ret = ret + 1;
 else
 break -- If it hasn't found any more, there's no reason to continue
 end
 end
 return ret
end
__NOTOC__
Category:User defined functions