2017-03-05 30 views
1

文字列を特殊文字で置き換えようとしています。例えば文字列内の文字列を特殊文字に置き換える

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

私は%-などの特殊文字をエスケープする必要があります知っているが、ファイル名は、私はパスを分割した後に得た変数です。

+2

私は答え[ここ](http://stackoverflow.com/questions/29072601/lua-string-gsub-with-a-hyphen)があなたに役立つと思います。私は特に2番目の答えと思います。 –

答えて

2

@Timothy 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最初のキャプチャの文字列を意味します。私自身は、この(2行はあなたのコード、実際には1行に追加された)のようなものを書いていました。 6.4.1 of Lua Reference Manualを参照してください。

+0

説明をありがとう!ポストの答えは理解するのが複雑でした。これは理解するのが簡単です。 – Cronos87

+1

gsubの置換文字列は同じ方法で%を使用しないので、 'newFilename = newFilename:gsub( '%W'、 '%%% 1')'部分を実行する必要はありません。 – tonypdmtr

+0

@tonypdmtrおっと、そうです。私は答えを修正しました。 –

関連する問題