Корона 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 использует %
чтобы избежать следующих магических персонажей:
( ) . % + - * ? [ ] ^ $
Если вы сомневаетесь, вы можете избежать любого не буквенно-цифрового символа с %
Луа в порядке, даже если персонаж не один из магических персонажей.