Корона 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 и изменить. с другим персонажем, но это тоже не сработало

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

Ссылка

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

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

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

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

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

Другие вопросы по тегам