日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lua中的魔法字符转义问题

發(fā)布時間:2025/6/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lua中的魔法字符转义问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ???強烈推薦人工智能學習網(wǎng)站??

? ? ? ?lua中的魔法字符有( ) . % + - * ? [ ] ^ $ ,在表示它們時候要考慮用到轉(zhuǎn)義,轉(zhuǎn)義符號為%,但有些卻不需要轉(zhuǎn)義。下面我們通過實際代碼來測試一下。

? ? ? ?首先來認識一個函數(shù),string.find()查找目標模板在給定字符串中出現(xiàn)的位置,找返回起始和結(jié)束位置,沒找到返回nil

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1(2","(")) root@16d2a5728582:~/mapan# lua test.lua lua: test.lua:1: unfinished capture stack traceback:[C]: in function 'find'test.lua:1: in main chunk[C]: ? root@16d2a5728582:~/mapan# cat test.lua print(string.find("1(2","%(")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

( 需要轉(zhuǎn)義

?

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1)2",")")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1)2","%)")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

?

) 不需要轉(zhuǎn)義也能被find到,當然轉(zhuǎn)義過了也沒有問題

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1.2",".")) root@16d2a5728582:~/mapan# lua test.lua 1 1 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1.2","%.")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

. 不需要轉(zhuǎn)義能被find到,而且不會報錯,但是返回的位置卻不對,有點奇怪。加上轉(zhuǎn)義字符%后,就成功返回了

?

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1%2","%")) root@16d2a5728582:~/mapan# lua test.lua lua: test.lua:1: malformed pattern (ends with '%') stack traceback:[C]: in function 'find'test.lua:1: in main chunk[C]: ? root@16d2a5728582:~/mapan# cat test.lua print(string.find("1%2","%%")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

% 不轉(zhuǎn)義會被報錯,加了轉(zhuǎn)義字符之后就返回了正確的結(jié)果

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1+2","+")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1+2","%+")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

+ 不轉(zhuǎn)義不會報錯,加上轉(zhuǎn)義字符之后也沒問題

?

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1-2","-")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1-2","%-")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

- ?不轉(zhuǎn)義不會報錯,加上轉(zhuǎn)義字符也沒有問題

?

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1*2","*")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1*2","%*")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

* 不轉(zhuǎn)義不會報錯,加上轉(zhuǎn)義字符也沒問題

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1?2","?")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1?2","%?")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

? 不轉(zhuǎn)義不會報錯,加上轉(zhuǎn)義字符也沒問題

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1[2","[")) root@16d2a5728582:~/mapan# lua test.lua lua: test.lua:1: malformed pattern (missing ']') stack traceback:[C]: in function 'find'test.lua:1: in main chunk[C]: ? root@16d2a5728582:~/mapan# cat test.lua print(string.find("1[2","%[")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

[ 不加轉(zhuǎn)義會報錯,加上轉(zhuǎn)義之后正常

?

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1]2","]")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1]2","%]")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

] 不加轉(zhuǎn)義不會報錯,加上轉(zhuǎn)義之后也正常

?

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1^2","^")) root@16d2a5728582:~/mapan# lua test.lua 1 0 root@16d2a5728582:~/mapan# cat test.lua print(string.find("1^2","%^")) root@16d2a5728582:~/mapan# lua test.lua 2 2 root@16d2a5728582:~/mapan#

^ 不加轉(zhuǎn)義前打印結(jié)果不正常,加上轉(zhuǎn)義之后打印結(jié)果正常

?

?

?

root@16d2a5728582:~/mapan# cat test.lua print(string.find("1$2","$")) root@16d2a5728582:~/mapan# lua test.lua 4 3 root@16d2a5728582:~/mapan#

$ 沒加打印字符返回的結(jié)果不正常,加了之后打印結(jié)果就正常了

?

?

? ?這一些魔法字符,有些不需要轉(zhuǎn)義,打印結(jié)果就正確;有些不轉(zhuǎn)義,打印結(jié)果錯誤,但是不會報錯;還有些直接報錯。感覺挺有意思的,但是也有點不解,當然實際開發(fā)中,字符還是都應該加上轉(zhuǎn)義。string.format()函數(shù)也會有類似的問題反饋
?

?



?

?


?


?

?

?




?

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的lua中的魔法字符转义问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。