关于lua字符串的处理

将temp_str以“,”为分割符,将各元素截取到数组表中代码如下:temp_note={}temp_str="F#1,G1,H1,B1,"print(string.le... 将temp_str以“,”为分割符,将各元素截取到数组表中
代码如下:
temp_note={}
temp_str="F#1,G1,H1,B1,"

print(string.len(temp_str))

while(temp_str~="")do--不断读取,直到行记录处理完毕
x=string.find(temp_str,",")--找出第一个分割符
print("string.find(temp_str,\",\")="..x)

y=string.sub(temp_str,1,x-1)
print("string.sub(temp_str,1,x-1)="..y)
table.insert(temp_note,y)--截取行第一个元素

z=string.sub(temp_str,x+1,string.len(temp_str))--剔除第一个元素(用后面剩下的命令代替原来的命令行)
temp_str=z
print("string.sub(temp_str,x+1,string.len(temp_str))="..temp_str)
end

for i=1,#temp_note do
print(temp_note[i])
end
实现结果如图(是minecraft一个mod的lua实现)
x值在第二次循环时不对,应该是3,但显示为7,是初始时temp_str的第二个分隔符的位置,但temp_str已在第一次循环时被修改了,是不是string.find(temp_str,",")在循环内时不是实时计算的,而是根据进入循环前时的temp_str计算的?
展开
 我来答
matlab2000
2012-05-13 · TA获得超过2323个赞
知道大有可为答主
回答量:1678
采纳率:100%
帮助的人:1052万
展开全部
呵呵。你都修改了,当然就是修改后的了。运行结果是对的。变量每个循环后都被改,当然索引是相对于改后的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式