WoW:USERAPI CountChars: Difference between revisions
Jump to navigation
Jump to search
m (New page: {{userfunc}} <!-- Leave this line in! --> <center>'''CountChars''' ''- by egingell -''</center> Return how many times ''needle'' is contained in ''haystack''. number = ...) |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{userfunc}} <!-- Leave this line in! --> | {{userfunc}} <!-- Leave this line in! --> | ||
Return how many times ''needle'' is contained in ''haystack''. | Return how many times ''needle'' is contained in ''haystack''. |
Revision as of 16:37, 4 December 2007
This page documents a <i>user-defined function</i> that you can copy and paste into your addon. Replace PREFIX with your addon or lib prefix to avoid conflicts between different versions of these functions.
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 return the length of haystack)
Note: Arguments are cast into strings before any processing is done.
Known Issue(1): Regular expressions sometimes won't find all instances of needle in haystack.
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 = 2 -- even though there's actually 3 ("rld", "rcr", and "raf"). Known Issue(1)
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 + 1
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