假设我有这个字符串:
map_data = " *-* ; /|x|\ ; *-*-*-*; /|x|x|x|;-*-*-*-*-*; \|x|x|x|; *-*-*-*; \|x|/ ; *-* ;"
我想在分号处将字符串拆分为有序表。完成此操作后,我想获取表中的每个元素并将每个字符拆分为有序表(嵌套在第一个表中)。这个想法是为 ascii 映射创建一个二维表。
我已经尝试过这个(但它不起作用,我也怀疑有更简单的方法):
map_data = " *-* ; /|x|\ ; *-*-*-*; /|x|x|x|;-*-*-*-*-*; \|x|x|x|; *-*-*-*; \|x|/ ; *-* ;"
map = {}
p = 1
pp = 1
for i in string.gmatch(map_data, "(.*);") do
map[p] = {}
for ii in string.gmatch(i, ".") do
map[p][pp] = ii
pp = pp + 1
end
p = p + 1
end
最佳答案
首先,字符串 map_data
无效,因为 \
需要转义。或者您可以使用长字符串语法 [[ ... ]]
:
map_data = [[ *-* ; /|x|\ ; *-*-*-*; /|x|x|x|;-*-*-*-*-*; \|x|x|x|; *-*-*-*; \|x|/ ; *-* ;]]
模式(.*);
的问题是,修饰符*
是贪婪的。相反,使用惰性的 -
修饰符:
for i in string.gmatch(map_data, "(.-);") do
关于string - Lua中将字符串分割成二维表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702595/