Lua字符串,在每个备用索引处插入一个整数
假设我有一个包含“abcdef”的字符串 我想要另一个字符串str2,其中包含str1的所有字符,并且在每个备用索引中都包含整数1,如Lua字符串,在每个备用索引处插入一个整数,lua,Lua,假设我有一个包含“abcdef”的字符串 我想要另一个字符串str2,其中包含str1的所有字符,并且在每个备用索引中都包含整数1,如 str2:byte(1) = 1 str2:byte(2) = 'a' str2:byte(3) = 1 str2:byte(4) = 'b' str2:byte(5) = 1 str2:byte(6) = 'c' 等等 我能做的最快的方法是什么。首先,在Lua中不能这样做赋值,也就是说,string.byte()不用于设置字节 您可以通过以下方式迭代str1
str2:byte(1) = 1
str2:byte(2) = 'a'
str2:byte(3) = 1
str2:byte(4) = 'b'
str2:byte(5) = 1
str2:byte(6) = 'c'
等等
我能做的最快的方法是什么。首先,在Lua中不能这样做赋值,也就是说,
string.byte()
不用于设置字节
您可以通过以下方式迭代str1
中的字符并逐个字符构建str2
:
local str1 = "abc"
local str2 = ""
for i=1,#str1 do
str2 = str2..string.sub(str1,i,i)..string.char(1)
end
当然,如果打印的是str2,它看起来会像str1,但它们的长度会有所不同:
print(str1,str2)
print(#str1, #str2)
为您提供以下输出:
abc abc
3 6
另一方面,如果您真正想要的是生成一个类似“a1b1c1”的字符串,那么在str1
中字符的循环中,您需要执行以下操作:
str2 = str2..string.sub(str1,i,i).."1"
如果您使用string.byte()
检查str2
for i=1,#str2 do
print( string.byte( str2, i ) )
end
你会得到这个的
97
1
98
1
99
1
其中97是“a”的ASCII字节,98是“b”的字节,等等。让Lua用
gsub做艰苦的工作:
str1 = "abcdef"
str2 = str1:gsub("(.)","%1\001")
print(str1:byte(1,-1))
print(str2:byte(1,-1))
这个输出
97 98 99 100 101 102
97 1 98 1 99 1 100 1 101 1 102 1
谢谢什么是string.char(0),它将给出什么值。?我想要str2第一个元素应该是1,第二个元素应该来自str1(1),第三个元素1和第四个元素来自str1(2),依此类推。。。。“string.char和string.byte函数在字符及其内部数字表示形式之间进行转换。函数string.char获取零个或多个整数,将每个整数转换为一个字符,并返回一个连接所有这些字符的字符串。”(来自“Lua编程”)哦,这是真的。对不起,我编辑了答案使其为1。另请参见关于“1”与1的注释。哦,这很好!但我想他想要str2=str1:gsub((.),”%1\001“
(即在原始字符串中的每个字符后添加一个\001。是的,使用str2=str1:gsub(“(”),“%1\001”),获得所需的结果在我希望将str2设置为1,a,1,b,1,c….的情况下,是否可能?明白了。我刚刚更改了str2=str1:gsub(“(”,“\001%1”)
97 98 99 100 101 102
97 1 98 1 99 1 100 1 101 1 102 1