2017-03-05 246 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哎呀,你是对的。我修改了答案。 –