lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]



On 02/03/2014 15:56, Coroutines wrote:
On Sun, Mar 2, 2014 at 12:18 AM, Dirk Laurie <dirk.laurie@gmail.com> wrote:
2014-03-02 9:06 GMT+02:00 Coroutines <coroutines@gmail.com>:

This does not:

= string.find('cat', 'cat', -31, true)
1 3
I expect it to match the string at the index I passed to it, not
silently reposition the start at a valid index (1).
All the string functions do that. It is documented under string.sub.

| If, after the translation of negative indices, i is less than 1, it
is corrected to 1.

Yes :-)  I believe it makes sense for string.sub(), as you would want
the valid portion of the string from (let's say) -31 to 5.  This would
be readjusted to only "sub out" indexes 1 through 5.  I do not believe
it makes sense for string.find()/string.match() -- as false-positives
are possible when I tell it to match somewhere clearly before the
string (in a place it doesn't exist).

I'm not sure if you know how matching works, but if you want to match at the start of a string, you have to use string.match("cat","^cat"). The only bug I see (on Lua 5.1 if that matters) is when using negative indices and matching at the start of a string...