Lua字符串查找 - 如何使用连字符处理字符串?

时间:2013-02-15 20:48:33

标签: lua

我有两个字符串 - 每个字符串有许多行,如下所示:

string1 = "  DEFAULT-VLAN         | Manual     10.1.1.3      255.255.255.0 "
string2 = "  1       DEFAULT-VLAN                     | Port-based No    No"

第一个字符串我分成以下字符串:“DEFAULT-VLAN”,“|”,“Manual”...... 然后我想从string1中查找string2中的ID(“1”)作为vlanName(“DEFAULT-VLAN”)。

我使用此代码来查找正确的子字符串:

vpos1, vpos2 = vlan:find("%d-%s-" .. vlanName .. "%s-|")

但是vpos1和vpos2是零;当连字符(“ - ”)从vlanName中删除时,它正在工作 Lua不应该注意逃避这些字符串中的特殊字符吗?字符串从我的C ++应用程序移交给Lua,可能有很多特殊字符 有没有一种简单的方法可以解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:3)

Lua并不神奇。所有表达式"%d-%s-" .. vlanName .. "%s-|"都会连接一些字符串,产生最终的字符串。它不知道该字符串的用途是什么。只有string.find知道这一点,并且它不会对如何使用参数给出任何影响。

是的,vlanName将被解释为Lua模式。如果你想使用特殊字符,你需要逃避它们。我建议使用string.gsub。它是这样的:

vlanName:gsub("[%-...]", "%%%0")

...是您要逃避的任何其他角色。