我在NodeMCU环境中使用Lua。我看到了用于修剪presented in this question的方法。
答案暗示了这种形式:
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)的设置?
答案 0 :(得分:3)
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]', '')
答案 1 :(得分:2)
执行print(something,somethingElse)
而不是print(something..somethingElse)
。连接单独的组件-不要只打印以逗号分隔的字符串列表。