我正在尝试将一个字符串分成两部分,用'.'
字符除以。但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
并进行更改。与另一个角色,但它不起作用
答案 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