假设我有一个包含" abcdef"。
的字符串str1 = "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'
所以.......
我能做到这一点的最快方法是什么。
答案 0 :(得分:4)
让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
答案 1 :(得分:2)
首先,您无法在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'等的字节。