我有以下變量:我需要重命名剛創建的文件,但類型擴展名之前
filepath = "test.tmx"
我需要在生成的文件名的末尾添加_out
,但在此之前擴展名。到目前爲止,我寫了這個,但它不正確:
File.open(filepath+"-"+language_code+"_out", "w")
任何想法?
我有以下變量:我需要重命名剛創建的文件,但類型擴展名之前
filepath = "test.tmx"
我需要在生成的文件名的末尾添加_out
,但在此之前擴展名。到目前爲止,我寫了這個,但它不正確:
File.open(filepath+"-"+language_code+"_out", "w")
任何想法?
您編輯的問題的答案很簡單。
filepath = "test.tmx"
filepath_before_extension = File.basename(filepath, '.tmx')
# => "test"
puts "#{filepath_before_extension}_out.tmx"
# => test_out.tmx
或者:
puts filepath.sub(/\.tmx$/, '_out.tmx')
# => test_out.tmx
回答你原來的問題是,只是稍微複雜。
如果我理解正確你想結合filepath
和language_code
形成這樣的文件名:
adidas_174_Generic-en-AR_out.tmx
...而是你得到這樣的:
adidas_174_Generic.tmx-en-AR_out
在這種情況下,它是相同的,除了你添加language_code
到輸出:
language_code = "es-AR"
filepath = "adidas_174_Generic.tmx"
filepath_before_extension = File.basename(filepath, '.tmx')
# => "adidas_174_Generic"
puts "#{filepath_before_extension}-#{language_code}_out.tmx"
# => adidas_174_Generic-es-AR_out.tmx
或者:
puts filepath.sub(/\.tmx$/, "-#{language_code}_out.tmx")
# => adidas_174_Generic-es-AR_out.tmx
親愛的downvoter:請留下評論,解釋你downvote的原因。如果我的答案缺乏,我希望有機會改進它。 –
解析你的文件名使用標準庫的File
將擴展名與擴展名分開,然後重新確定。
這應該工作:
languages_list = ["es-AR", "es-CL", "es-CO", "es-MX", "es-PE"]
filepath = "adidas_174_Generic.tmx"
text = File.read(filepath)
languages_list.each do |language_code|
puts language_code
replace = text.gsub('<tuv xml:lang="es-PA">', "<tuv xml:lang=\"# {language_code}\">")
file_base = File.basename filepath, ".*"
file_extension = File.extname filepath
new_file_path = file_base+language_code+"_out"+file_extension
File.open(new_file_path, "w") {|file| file.puts replace}
歡迎堆棧溢出。我們需要最少的樣本輸入。此外,您的代碼在語法上不正確。請修復它。請參閱「[問]」和「[mcve]」。另外,由於TMX是一種XML格式,你不應該嘗試使用正則表達式,你應該使用像[Nokogiri](http://nokogiri.org)這樣的解析器。 –