使用 string.gsub 将空白字符更改为_无效

即使我使用 gsub 将空格更改为_,if 语句仍然会收到错误 **试图索引空值**,我想知道问题出在哪里。我不能使用 pairs 函数,因为那是我的老师给出的指示。

这是我的代码,请原谅我是初学者。

text = "ib c e d f"
text = string.lower(text)
b = text:gsub("%s+", "_")
for k=1, #b do

  if  not string.sub(b, k,k) or string.sub(b, k,k) ~= " " then
      if a[i][2] == string.sub(b, k,k) then
        print(yes)
      end
  end
点赞
用户7552968
用户7552968

以下是您的代码片段中存在语法错误导致的错误。 gsub函数实际上很好用。


text ="ib c e d f"
text = string.lower(text)
b = text:gsub(“%s +”,“_”) - 这个gsub很好用
for k=1,#b do

  如果没有string.sub(b,k,k)或string.sub(b,k,k)~ =“ ”那么
      如果a [i] [2] == string.sub(b,k,k)然后 - 你之前没有分配任何名为“a”的表 - 尝试索引空值
        打印(yes)
  结束
end - 这是遍历“for k”的结尾

我猜您想要比较结果字符串和原始字符串。由于您的问题如此神秘,因此我只能提供以下代码供您参考:

text ="ab c d e f "
text = string.lower(text)

output = text:gsub(“%s”,“_”)

for k = 1,#output do
  local char = string.suboutput,k,k)
  local originalChar = string.sub(text,k,k)
  如果(originalChar〜 =“ ”)且(char == originalChar)则
    printchar ..“--> OK”)
  结束
end

gsub模式使用%s而不是%s +,以便将每个空格转换为下划线,以便进行简单的单元测试(逐个字符比较)。可在此处找到代码片段。

2017-02-23 21:09:28