【发布时间】:2019-07-27 14:25:18
【问题描述】:
我在 Lua 中有以下功能。
function tempchange(m1)
if type(m1) ~="string" then return m1 end
for w in string.gmatch(m1, "%d%+%d*i") do
words[#words+1]=w
end
for i = 1, #words do
words[i]=string.gsub(words[i],"+","uuu")
end
m1=string.gsub(m1,"+","uuu")
for i = 1, #words do
m1=string.gsub(m1,words[i],'"'..words[i]..'"')
end
m1=string.gsub(m1,"uuu","+")
return m1
end
字符串 m 和 n 定义为
m = '{{1,2,3},{4,5,6},{7,8,"9+i"}}'
n = '{{1,2,3},{4,5,6},{7,8,9+i}}'
我希望字符串 m 和 tempchange(n) 相同。事实上,我做了以下检查。
print(m)
print(tempchange(n))
print(type(m))
print(type(tempchange(n)))
print(m==tempchange(n))
输出是
{{1,2,3},{4,5,6},{7,8,"9+i"}}
{{1,2,3},{4,5,6},{7,8,"9+i"}}
string
string
false
因此,即使 m 和 tempchange(n) 两个字符串都是字符串并且它们看起来相同,但在比较它们时我们会得到错误。这意味着它们是不同的。为什么会这样?我是 lua 新手,正在努力学习它。任何帮助将不胜感激。谢谢。
【问题讨论】:
-
我已经编辑了帖子。我说得非常清楚和简单。它也为我解释了这种功能的必要性。请检查。
-
这是对我的要求。查看
n和tempstring(n)之间的区别。我无法删除该行。 -
我认为我发布了具有完整代码和清晰性的有效问题。我不能把它编码得更简单。查看 n 和 tempchange(n) 之间的区别。字符串 n 可以包含更多的 a+ib 形式的数字。因此 for 循环是必要的。仍然投反对票。有人可以解释为什么对新用户投反对票吗?
-
两个问题:1.您没有显示定义
words的代码。没有它,代码就无法运行,我们不能只假设你把那行放在哪里。 2. 你应该更好地缩进你的代码。这很难解释,但基本上,您需要将每个代码块的主体缩进比该块的头部和end深一级。
标签: string replace lua string-comparison substitution