我有两个字符串 - 每个字符串有许多行,如下所示:
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,可能有很多特殊字符 有没有一种简单的方法可以解决这个问题?
谢谢!
答案 0 :(得分:3)
"%d-%s-" .. vlanName .. "%s-|"
都会连接一些字符串,产生最终的字符串。它不知道该字符串的用途是什么。只有string.find
知道这一点,并且它不会对如何使用参数给出任何影响。
是的,vlanName
将被解释为Lua模式。如果你想使用特殊字符,你需要逃避它们。我建议使用string.gsub
。它是这样的:
vlanName:gsub("[%-...]", "%%%0")
...
是您要逃避的任何其他角色。