lua - 如何忽略Lua中字符串操作的特殊字符?
问题描述
local x = "Mr %gra-b"
local y = "Mr %gra-b is your master-!"
y = y:match(x)
print(y) --expecting Mr %gra-b
可悲的是它打印为零。删除特殊字符将使其工作。但我们希望字符串按原样返回。
解决方案
local x = "Mr %%gra%-b"
local y = "Mr %gra-b is your master-!"
y = y:match(x)
print(y) --expecting Mr %gra-b
魔术字符^$()%.[]*+-?
需要通过前置来进行转义%
!请阅读Lua 手册!
由于评论而编辑:
是的,但是如果本地 x 是用户输入怎么办?我们必须假设用户不知道魔法字符。例如。过滤搜索名称和单词?
如果文本是在变量中提供还是通过用户输入提供,这有什么关系。解决方法还是一样的。你需要逃脱魔法角色。
x = x:gsub("%W", "%%%0")
%
你在任何魔法角色前面加上一个。再次,阅读 Lua 手册!
或者使用 Egor 的建议:
y:find(x, 1, true)
第三个参数将抑制模式匹配并简单地搜索提供的字符串。如果您只想检查字符串中是否存在字符串,这可能是最简单的解决方案
推荐阅读
- javascript - Nativescript RadDataForm 转换属性不适用于 json 数组
- google-chrome - Firefox 警告 404 脚本的“text/html 不是有效的 JavaScript MIME 类型”
- vue.js - Vue v-if 似乎不在包装器 vue 中工作
- db2 - 将自午夜以来的毫秒转换为可读时间戳
- javascript - 反应导航与导航 HOC 在轮播中不起作用
- android - 具有相同键的多个条目:FirebaseInstanceId
- python - 如何在python中从img html中抓取src
- ios - 如何知道 iDevice 的当前方向
- javascript - 如何获得每行值总和的总列
- javascript - 用户写作时,如何将文本光标保持在右侧的 html 输入字段中?