Search code examples
stringluacoronasdklua-patterns

Corona string.find() : Finding "."


I'm trying to split a string into two parts, which is divided by a '.' character. But string.find() function cant handle that

I have this kind of string

local test = "345345.57573"

I tried

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

But none of them worked. String.find() always return 1 which is false. What might be the problem?

Edit: I also tried to use gsub and change . with another character but it didn't work either


Solution

  • Try this example

    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