string.gsubパラメータに%記号が含まれている問題

828 ワード

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.