2013-07-08 2 views
0

Я пытаюсь разбить строку на две части, которая делится на символ '.'. Но string.find() функция не может справиться с этимCorona 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 и изменить. с другим характером, но это не сработало

+1

Возможный дубликат [Поиск ». с string.find()] (http://stackoverflow.com/questions/15258313/finding-with-string-find) – finnw

+0

Хорошо, если вам просто нужны два числа, то a = {string.match ("2353445.23434", "(% w +)%. (% w +)")} вернет таблицу с номерами в. –

ответ

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

+0

Спасибо, она работает безупречно .. Кажется, что я должен использовать «%». вместо "." Это тоже проблема. –

5

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

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

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

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

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

+0

Спасибо, но уже нашел, что ответ ^^ –

+0

+1 Потому что «попробуй это» не так хорошо, как «вот почему». – Shibumi