2

I'm trying to do a function in Lua that swaps the characters in a string.
Can somebody help me ?

Here is an example:

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

Note: The space is also swapped

Thank You Very Much :)

Luca93
  • 91
  • 6

2 Answers2

5

The simplest and clearest solution is this:

Result = Input:gsub("(.)(.)","%2%1")
lhf
  • 70,581
  • 9
  • 108
  • 149
4

This should do it:

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))

Prints:

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

If you need the output as lower case you could always end it with:

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

Note, in this example, I'm not actually editing the string itself, since strings in Lua are immutable. Here's a read: Modifying a character in a string in Lua

I've used a table to avoid overhead from concatenating to a string because each concatenation may allocate a new string in memory.

Community
  • 1
  • 1
Arjun Kumar
  • 124
  • 4