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

Lua字符串查找-如何使用连字符处理字符串?,lua,Lua,我有两个字符串-每个字符串有许多行,如下所示: string1 = " DEFAULT-VLAN | Manual 10.1.1.3 255.255.255.0 " string2 = " 1 DEFAULT-VLAN | Port-based No No" 我将第一个字符串拆分为以下字符串:DEFAULT-VLAN、|、Manual。。。 然后,我想在string2中查找ID 1,以查找strin

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

string1 = "  DEFAULT-VLAN         | Manual     10.1.1.3      255.255.255.0 "
string2 = "  1       DEFAULT-VLAN                     | Port-based No    No"
我将第一个字符串拆分为以下字符串:DEFAULT-VLAN、|、Manual。。。 然后,我想在string2中查找ID 1,以查找string1中的VLANAME DEFAULT-VLAN

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

vpos1, vpos2 = vlan:find("%d-%s-" .. vlanName .. "%s-|")
但vpos1和vpos2为零;当连字符-从VLAN名称中删除时,它正在工作。 Lua不应该注意转义这些字符串中的特殊字符吗?字符串从我的C++应用程序切换到Lua,可能有很多特殊字符。 有没有简单的方法来解决这个问题


谢谢

Lua不是魔法。所有表达式%d-%s-。。VLAN名称..%s-|所做的是连接一些字符串,生成最后一个字符串。它不知道该字符串的用途。只有string.find知道这一点,并且它对如何使用给定的参数没有任何影响

是的,VLAN名称将被解释为Lua模式。如果你想使用特殊字符,你需要转义它们。我建议使用string.gsub。应该是这样的:

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

在哪里。。。是您想要转义的任何其他角色。

Lua不是魔法。所有表达式%d-%s-。。VLAN名称..%s-|所做的是连接一些字符串,生成最后一个字符串。它不知道该字符串的用途。只有string.find知道这一点,并且它对如何使用给定的参数没有任何影响

是的,VLAN名称将被解释为Lua模式。如果你想使用特殊字符,你需要转义它们。我建议使用string.gsub。应该是这样的:

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

在哪里。。。是否还有其他要转义的字符。

我猜在上面的代码中,-等于0或更多次出现?如果需要匹配连字符,则需要使用%.对其进行转义。我不想匹配连字符-我通常不知道字符串中是否有连字符。我想在string2I中匹配1个DEFAULT-VLAN |我想在上面的代码中,-等于0或更多次出现?如果需要匹配连字符,则需要使用%.对其进行转义。我不想匹配连字符-我通常不知道字符串中是否有连字符。我想匹配string2中的1个默认VLAN