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

我正在尝试编写一个 Lua 函数,可以交换字符串中的字符。

有人可以帮我吗?

以下是示例:

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

注意:空格也被交换了。

非常感谢 :)

点赞
用户2793252
用户2793252

这样应该可以:

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

function swapAlternateChars(str)
   local t={}

   -- 两个字符两个字符地循环字符串
   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中的字符串是不可变的。阅读这篇文章:在Lua中修改字符串中的字符

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

2013-09-18 22:37:29
用户107090
用户107090

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

Result = Input:gsub("(.)(.)","%2%1")
2013-09-19 01:19:37