string.gsub参数中包含%符号的问题

在使用lua字符串替换函数时遇到一个问题,目标串中包含%时,替换的结果和预期不一致,比如:
local source= [[你好,你叫什么名字]]
local aim = string.gsub(source,’你好’,’xx’)
预期结果是“xx,你叫什么名字”
由于xx是动态的,每次的结果是其他地方传过来的,如果xx的值为“我好%”,期望的结果是“我好%,你叫什么名字”,但实际结果是“我好”。因为lua里的字符串函数基于正则实现的,%被理解为匹配所有的字符,于是想到对%进行转义,从lua的参考手册中发现%是转义字符,”%%”表示符号’%’,于是代码修改为:
local source= [[你好,你叫什么名字]]
xx = string.gsub(xx,’%%’,’%%%%’)
local aim = string.gsub(source,’你好’,’xx’)
问题解决
资料链接:http://www.lua.org/pil/20.2.html
部分内容:
Some characters, called magic characters, have special meanings when used in a pattern. The magic characters are

( ) . % + - * ? [ ^ $

The character %´ works as an escape for those magic characters. So, '%.' matches a dot; '%%' matches the character%´ itself.

你可能感兴趣的:(Lua)