Corona string.find() : Поиск.

Я пытаюсь разбить строку на две части, разделенные символом '.'. Но функция string.find() не справляется с этим

у меня такая струна

local test = "345345.57573"

Я старался

local start = string.find( test, "." )
local start = string.find( test, "\." )
local start = string.find( test, "(%w+).(%w+)" )

Но ни один из них не работал. String.find() всегда возвращает 1, что является ложным. В чем может быть проблема?

Изменить: я также пытался использовать gsub и изменить . с другим персонажем, но это тоже не сработало


person Doğancan Arabacı    schedule 08.07.2013    source источник
comment
возможный дубликат Поиск '.' с помощью string.find()   -  person finnw    schedule 08.07.2013
comment
Хорошо, конечно, если вам просто нужны два числа, тогда a = {string.match(2353445.23434,(%w+)%.(%w+))} вернет таблицу с числами.   -  person Jane T    schedule 08.07.2013


Ответы (2)


Попробуйте этот пример

function split(pString, pPattern)

    if string.find(pString,".") then
        pString = string.gsub(pString,"%.","'.'")
    end

    if pPattern == "." then
        pPattern = "'.'"
    end

    local Table = {}  -- NOTE: use {n = 0} in Lua-5.0
    local fpat = "(.-)" .. pPattern
    local last_end = 1
    local s, e, cap = pString:find(fpat, 1)
    while s do
        if s ~= 1 or cap ~= "" then
            table.insert(Table,cap)
        end
        last_end = e+1
        s, e, cap = pString:find(fpat, last_end)
    end
    if last_end <= #pString then
        cap = pString:sub(last_end)
        table.insert(Table, cap)
    end

    return Table
end

local myDataTable = split("345345.57573",".")

--Loop Through and print the last split data table

print(myDataTable[1]) --345345
print(myDataTable[2]) --57573

Справочник

person NaviRamyle    schedule 08.07.2013
comment
Спасибо, работает без нареканий.. Кажется, надо было использовать %. вместо . Это тоже проблема.. - person Doğancan Arabacı; 08.07.2013

Просто используйте %. в шаблоне для соответствия.

local start = string.find( test, "%." )

В отличие от многих других языков, Lua использует % для экранирования следующих магических символов:

( ) . % + - * ? [ ] ^ $

Если вы сомневаетесь, вы можете экранировать любой небуквенно-цифровой символ с помощью %, Lua подходит к этому, даже если символ не является одним из магических символов.

person Yu Hao    schedule 08.07.2013