Lua中的字符串操作:交换字符串中的字符

时间:2013-09-18 21:11:49

标签: string lua swap

我正在尝试在Lua中执行一个函数来交换字符串中的字符 有人能帮助我吗?

以下是一个例子:

Input =  "This LIBRARY should work with any string!"  
Result = "htsil biaryrs ohlu dowkrw ti hna ytsirgn!"  

注意:空格也被交换

非常感谢你:)

2 个答案:

答案 0 :(得分:5)

最简单,最清晰的解决方案是:

Result = Input:gsub("(.)(.)","%2%1")

答案 1 :(得分:4)

这应该这样做:

input =  "This LIBRARY should work with any string!"

function swapAlternateChars(str)
   local t={}

   -- Iterate through the string two at a time 
   for i=1,#str,2 do
     first = str:sub(i,i)
     second = str:sub(i+1,i+1)
     t[i] = second
     t[i+1] = first
   end
   return table.concat(t)
end

print(input)
print(swapAlternateChars(input))

打印:

This LIBRARY should work with any string!
hTsiL BIARYRs ohlu dowkrw ti hna ytsirgn!

如果您需要输出为小写,则可以始终以:

结束
output = swapAlternateChars(input)
print(string.lower(output))

注意,在这个例子中,我实际上并没有编辑字符串本身,因为Lua中的字符串是不可变的。这是一个阅读:Modifying a character in a string in Lua

我使用了一个表来避免连接到字符串的开销,因为每个连接可能会在内存中分配一个新的字符串。