WoW:API strfind: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
(Added an example to demonstrate use with patterns)
m (typos)
Line 18: Line 18:
  13      13
  13      13


The pattern argument can be a regular expression which allows more complex searchs. See the [http://lua-users.org/wiki/PatternsTutorial Patterns Tutorial on Lua-Users.org] for more information. We can turn off the regular expression feature by using the optional fourth argument plain. plain takes a boolean value and must be preceeded by init. E.g.,
The pattern argument can be a regular expression which allows more complex searches. See the [http://lua-users.org/wiki/PatternsTutorial Patterns Tutorial on Lua-Users.org] for more information. We can turn off the regular expression feature by using the optional fourth argument plain. plain takes a boolean value and must be preceded by init. E.g.,


  > = string.find("Hello Lua user", "%su")          -- find a space character followed by "u"
  > = string.find("Hello Lua user", "%su")          -- find a space character followed by "u"

Revision as of 11:44, 24 March 2007

Lua/Libshortcut

string.find(s, pattern [, init [, plain]])

Find the first occurrence of the pattern in the string passed. If an instance of the pattern is found a pair of values representing the start and end of the string is returned. If the pattern cannot be found nil is returned.

> = string.find("Hello Lua user", "Lua")
7       9
> = string.find("Hello Lua user", "banana")
nil

We can optionally specify where to start the search with a third argument. The argument may also be negative which means we count back from the end of the string and start the search.

> = string.find("Hello Lua user", "Lua", 1)  -- start at first character
7       9
> = string.find("Hello Lua user", "Lua", 8)  -- "Lua" not found again after character 8
nil
> = string.find("Hello Lua user", "e", -5)   -- first "e" 5 characters from the end
13      13

The pattern argument can be a regular expression which allows more complex searches. See the Patterns Tutorial on Lua-Users.org for more information. We can turn off the regular expression feature by using the optional fourth argument plain. plain takes a boolean value and must be preceded by init. E.g.,

> = string.find("Hello Lua user", "%su")          -- find a space character followed by "u"
10      11
> = string.find("Hello Lua user", "%su", 1, true) -- turn on plain searches, now not found
nil

Example

Sometimes it's more appropriate to use string.find, rather than string.gmatch, eg:

local msg = "Phase2:- There isn't any need for iterating over this mini-string.";
local startPos, endPos, firstWord, restOfString = string.find( msg, "(%w+)[%s%p]*(.*)");

Result

startPos = 1
endPos = 66
firstWord = "Phase2"
restOfString = "There isn't any need for iterating over this mini-string."

Template:LUA