2017-03-05 242 views
1

我試圖用新字符替換帶有特殊字符的字符串。用特殊字符替換字符串中的字符串

例如:

path = "assets/test-image-filename.jpg" 
filename = "test-image-filename.jpg" 
newFilename = "new-filename.jpg" 
newPath = path:gsub(filename, newFilename) 

我知道我必須逃離特殊字符,如-%,但文件名是一個變量我分裂路徑後得到。

+2

我認爲找到答案[here](http://stackoverflow.com/questions/29072601/lua-string-gsub-with-a-hyphen)會幫助你。我特別想第二個答案。 –

回答

2

@蒂莫西G.的評論可以幫助。我自己在寫這樣的事情(兩行添加到您的代碼,實際上是一條線):

path = "assets/test-image-filename.jpg" 
filename = "test-image-filename.jpg" 
newFilename = "new-filename.jpg" 

filename = filename:gsub('%W', '%%%1') 
-- newFilename = newFilename:gsub('%W', '%%%1') -- no need to do the same for repl string 

newPath = path:gsub(filename, newFilename) 

%W指任何非字母數字字符和%1捕獲的第一串。見6.4.1 of Lua Reference Manual

+0

謝謝你的解釋!這篇文章的答案很難理解。這個更容易理解。 – Cronos87

+1

gsub中的替換字符串不以相同的方式使用%,因此不需要執行:'newFilename = newFilename:gsub('%W','%%% 1')''部分。 – tonypdmtr

+0

@tonypdmtr哎呀,你是對的。我修改了答案。 –