Lua字符串,在每个备用索引处插入一个整数

时间:2017-04-28 00:24:51

标签: lua

假设我有一个包含" 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'

所以.......

我能做到这一点的最快方法是什么。

2 个答案:

答案 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'等的字节。