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 = ...) |
m (Move page script moved page USERAPI CountChars to USERAPI CountChars without leaving a redirect) |
||
(3 intermediate revisions by 3 users not shown) | |||
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''. | ||
Line 9: | Line 8: | ||
:;haystack: String - The search subject. | :;haystack: String - The search subject. | ||
:;needle: The string to look for. ''needle'' can be a regular expression ('[a-z%s%d]' will | :;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 === | === Returns === | ||
Line 28: | Line 29: | ||
number2 = 2 | number2 = 2 | ||
number3 = 3 | number3 = 3 | ||
number4 = | number4 = 3 | ||
==Code== | ==Code== | ||
Line 38: | Line 39: | ||
local s, e = strfind(haystack, needle, pos) | local s, e = strfind(haystack, needle, pos) | ||
if e then | if e then | ||
pos = e + 1 | pos = e | ||
if s == e then | |||
pos = pos + 1 | |||
end | |||
end | end | ||
if s and e then | if s and e then | ||
Line 50: | Line 54: | ||
__NOTOC__ | __NOTOC__ | ||
[[Category:User | [[Category:User defined functions]] |
Latest revision as of 04:49, 15 August 2023
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[edit]
Arguments[edit]
- 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[edit]
- number
- Number of times needle is contained in haystack. If needle is not found, returns 0.
Example[edit]
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[edit]
number1 = 2 number2 = 2 number3 = 3 number4 = 3
Code[edit]
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