我有以下变量:
filepath = "test.tmx"
我需要在生成的文件名的末尾添加_out
,但在扩展名之前。到目前为止,我写过这个,但这是不正确的:
File.open(filepath+"-"+language_code+"_out", "w")
有什么想法吗?
答案 0 :(得分:1)
首先,将文件extension和basename提取到几个变量中:
# Get the file extension
ext = File.extname(filepath)
# Get the file's basename (without extension)
basename = File.basename(filepath, '.*')
然后您可以使用它们构建新文件名:
File.open(basename + language_code + '_out' + ext, 'w')
答案 1 :(得分:0)
解析您的文件名,使用标准库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}
答案 2 :(得分:-1)
您编辑过的问题的答案很简单。
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