Lua尾随空间删除

时间:2018-07-04 22:03:45

标签: string lua

我在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)的设置?

2 个答案:

答案 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)。连接单独的组件-不要只打印以逗号分隔的字符串列表。