2

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

这是一个例子:

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

注意:空间也被交换

非常感谢您 :)

4

2 回答 2

5

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

Result = Input:gsub("(.)(.)","%2%1")
于 2013-09-19T01:19:37.027 回答
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 中的字符串是不可变的。这里有一个读物:在 Lua 中修改字符串中的一个字符

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

于 2013-09-18T22:37:29.120 回答