Lua 去除行末空格

我正在 NodeMCU 的 Lua 环境中使用 Lua。 我在这个问题中看到了去除空格的方法(在此问题中提出)

答案建议使用以下形式:

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)的方法呢?

点赞
用户4403144
用户4403144

建议

不要使用 print(something,somethingElse),而是使用 print(something..somethingElse)。将独立的组件连接在一起 - 不要仅仅打印一个用逗号分隔的字符串列表。

2018-07-04 22:17:11
用户9383219
用户9383219

print 函数会在其参数之间添加制表符(在将它们转换为字符串后)。为了正确检查,可以使用 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]', '')
2018-07-04 22:18:14