Обратная строка в Lua?

Я пытаюсь перевернуть строку в Lua без использования функции string.reverse(). Вот мой код -

 function reverseStr(s)
   return string.gsub(s, "(.)(.)", "%2%1")
 end

В настоящее время код меняет местами только первые два символа в строке, и мне интересно, что я могу сделать, чтобы функция перевернула каждый символ в строке.

abc -- cba bbc -- cbb dka -- akd

Благодарю вас!


person Nicholas Rubin    schedule 30.07.2012    source источник


Ответы (1)


Вы не можете заставить систему сопоставления шаблонов Lua перевернуть строку. Вы должны либо написать очевидный реверсивный код (перебор строки в обратном порядке, построение новой таблицы из строк в обратном порядке и использование table.concat), либо использовать string.reverse.

person Nicol Bolas    schedule 30.07.2012
comment
Мне нравится, что ты оставил хорошее на конец. Я собирался перебрать строку в обратном направлении, но вы сэкономили мне несколько строк кода. string.reverse(str) отлично работает - person Joe Black; 27.11.2017
comment
Если вы по какой-либо причине КОГДА-ЛИБО попытаетесь реализовать реверс самостоятельно, используйте таблицу + table.concat вместо добавления одного символа за раз. - person val is still with Monica; 01.08.2019