【问题标题】:How to split string into two arrays in Lua?如何在Lua中将字符串拆分为两个数组?
【发布时间】:2013-07-22 22:07:59
【问题描述】:

我正在使用 Lua,并且我有一个文件,我想将每一行分成两个不同的数组。我的文件的每一行都包含两个用空格分隔的字符串。 例如,如果我的文件包含

 something something_else

我应该有

tab_1[1] = something
tab_2[1] = something_else

我尝试使用像这样的拆分

file =io.open("myfile.txt", "r")
for line in file:lines() do
line = file:read()
for value in split(line," ")
table.insert(tab_1,value[i])
table.insert(tab_2,value[i])
i=i+1
end

这似乎是错误的,因为我知道 split 可能不会返回数组,但我知道它返回不同的字符串。我该如何管理它们。

【问题讨论】:

  • tab_1[1]tab_2[2]?这似乎有点奇怪。此外,从您的代码来看,您似乎更想要tab_1[1]tab_2[1]
  • 是的,我错了,它是 tab_1[1] 和 tab_2[1]

标签: string lua


【解决方案1】:
for line in io.lines'myfile.txt' do
  local v1, v2 = line:match'(.-)%s+(.*)'
  table.insert(tab_1,v1)
  table.insert(tab_2,v2)
end

【讨论】:

  • 实际上并没有按预期工作实际上我不知道我是否足够清楚,但我的文件包含由空格分隔的 url 和 ip 地址,它不仅仅是简单的单词。第二个变量 v2 没有得到任何值
  • 请从您的文本文件中显示一个字符串示例,其中v2 对我的代码没有任何价值。
  • 我无法按原样放置 http url,因为它将是一个链接
  • 为我工作fine。用另一行测试它并给出问题所在的链接。
  • 你的代码很好@Egor我的代码有问题,我修复了它,感谢你的时间和帮助
【解决方案2】:
for line in io.lines('myfile.txt') do
  local v1, v2 = string.match(line, "^(%S+)%s+(%S+)$")
  if v1 and v2 then
    table.insert(tab_1,v1)
    table.insert(tab_2,v2)
  else
    -- wrong line
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多