我試圖在Lua中查找包含特殊字符的字符串的精確匹配。我想下面的例子返回,這是完全匹配,但由於-
字符返回nil
Lua - 包含非字母類的匹配字符串
index = string.find("test-string", "test-string")
返回nil
index = string.find("test-string", "test-")
返回1
index = string.find("test-string", "test")
也返回1
我怎樣才能做到完全匹配?
我試圖在Lua中查找包含特殊字符的字符串的精確匹配。我想下面的例子返回,這是完全匹配,但由於-
字符返回nil
Lua - 包含非字母類的匹配字符串
index = string.find("test-string", "test-string")
返回nil
index = string.find("test-string", "test-")
返回1
index = string.find("test-string", "test")
也返回1
我怎樣才能做到完全匹配?
您還可以要求忽略魔法字符的純字符串匹配:
string.find("test-string", "test-string",1,true)
您需要轉義%
字符的模式中的特殊字符。
所以在這種情況下,你正在尋找
local index = string.find('test-string', 'test%-string')
-
是一個Lua字符串模式的模式操作,所以當你說test-string
,你告訴find()
到test
的幾次爲匹配字符串可能。那麼會發生什麼呢看起來是test-string
,看到test
那裏,並且因爲-
在這種情況下不是實際的減號,所以它真的在尋找teststring
。
照邁克的話說,並用%
這個角色逃跑。我發現有助於更好地理解模式。
這很有幫助,你有什麼建議可以在字符串中找到這些特殊字符,並用它們自己和'%'替換它們?也許使用'string.gsub'? – wprins
在我的情況下,這是最好的答案。這是因爲第二個「測試字符串」實際上是用戶輸入的,所以我需要檢查完全匹配。 – wprins