日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

lua中的魔法字符转义问题

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

? ? ? ???強(qiáng)烈推薦人工智能學(xué)習(xí)網(wǎng)站??

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

? ? ? ?首先來認(rèn)識一個函數(shù),string.find()查找目標(biāo)模板在給定字符串中出現(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到,當(dāng)然轉(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é)果錯誤,但是不會報錯;還有些直接報錯。感覺挺有意思的,但是也有點不解,當(dāng)然實際開發(fā)中,字符還是都應(yīng)該加上轉(zhuǎn)義。string.format()函數(shù)也會有類似的問題反饋
?

?



?

?


?


?

?

?




?

?

?

?

?

?

?

?

?

?

?

總結(jié)

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

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