string - Lua中将字符串分割成二维表

标签 string split lua lua-patterns

假设我有这个字符串:

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/

相关文章:

regex - 拆分字符串并获取最后一个元素

java - 数组长度;是正确的

java - 自动填充多维 String[][] 数组

android - 为什么我的广播接收器无法识别我的字符串 - 发送短信代码

python - 如何解析带有分数的字符串以获取 '/'两边的数字

C++ Lua 5.1 问题

c - 如何构建一个嵌入 Lua 的 C 程序?

java - 通过每次出现时最后一个分隔符的存在将字符串拆分为数组的惯用方法

python - 将字符串列表转换为一个字符串

json - Redis Lua 区分空数组和对象