Corona string.find():找到“。”

时间:2013-07-08 08:47:33

标签: string lua corona lua-patterns

我正在尝试将一个字符串分成两部分,用'.'字符除以。但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 个答案:

答案 0 :(得分:5)

只需在模式中使用%.即可。

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

与许多其他语言不同,Lua使用%来逃避以下魔术角色:

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

如果有疑问,您可以使用%转义任何非字母数字字符,即使该字符不是魔术字符之一,Lua也可以使用它。

答案 1 :(得分: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

Reference