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