我在使用特殊字符将字符串拆分为两部分时遇到问题。
例如:
12345#data
或
1234567#data
我的第一部分有5-7个字符,第二部分用"#"
分隔,其他数据(字符,数字,无关紧要)
我需要在#
的每一侧以两个变量存储两个部分:
x = 12345
y = data
没有"#"
字符。
我正在寻找一些Lua字符串函数,如splitOn("#")
或子字符串,直到字符,但我还没有找到。
答案 0 :(得分:9)
首先,尽管Lua没有split函数是它的标准库,但它确实有
string.gmatch
,在许多情况下可以使用它来代替split函数。与分割函数不同,string.gmatch
采用模式匹配非分隔符文本,而不是分隔符本身
借助带有string.gmatch
的否定字符类,可以轻松实现:
local example = "12345#data"
for i in string.gmatch(example, "[^#]+") do
print(i)
end
请参阅IDEONE demo
[^#]+
模式匹配除#
以外的一个或多个字符(因此,它"拆分"包含1个字符的字符串)。
答案 1 :(得分:8)
使用string.match
并捕获。
试试这个:
s = "12345#data"
a,b = s:match("(.+)#(.+)")
print(a,b)