关于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计算的? 展开
代码如下:
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计算的? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询