Lua удаление пробела - PullRequest
       2

Lua удаление пробела

0 голосов
/ 05 июля 2018

Я использую Lua в среде NodeMCU. Я видел подход для обрезки пробелов , представленный в этом вопросе .

Ответ предполагает эту форму:

str = string.gsub(str, "%s+", "")

Я обнаружил, что это не имеет никакого эффекта. Здесь вывод от интерактивных команд (используя LuaLoader).

> print("|",part1,"|")
|   172.16.0.19 |
> part1a = string.gsub(part1, "%s+", "")

> print("|",part1a,"|")
|   172.16.0.19 |
> 

Если я проверю строки в шестнадцатеричном виде, я вижу, что есть несколько вкладок. Очевидно,% s (шаблон пробелов) не считает табуляцию пробелами. Есть ли параметр, позволяющий% s соответствовать вкладке (0x09)?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Функция print выводит свои аргументы с вкладками между ними (после преобразования их в строки с tostring). Чтобы проверить это правильно, используйте io.write (который не добавляет табуляции между своими аргументами и только конвертирует числа в строки):

str = '   172.16.0.19 '
stripped = string.gsub(str, '%s+', '')
io.write('|', str, '|\n')
io.write('|', stripped, '|\n')

Обратите внимание, что это удалит все пробелы и символы новой строки, даже если они находятся внутри строки. Чтобы удалить их с любого конца:

str = string.gsub(str, '^%s*(.-)%s*$', '%1')

или на концах строк и конце строки:

str = string.gsub(str, '[ \t]+%f[\r\n%z]', '')
0 голосов
/ 05 июля 2018

Вместо print(something,somethingElse), сделайте print(something..somethingElse). Объедините отдельные компоненты - не печатайте список строк через запятую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...