Вот мой кодЕсть ли более элегантный способ подстроки?
file_name = Dir['path/xml/test/*.txt']
file_name.to_s # => ["path/xml/test/test.txt"]
Я хочу вернуться:
"test"
я могу сделать это с кодом ниже:
file_name = Dir['path/xml/test/*.txt']
file_name.to_s[15,60].gsub(/.txt["]/,"").gsub(/]/,"")
Но это не очень элегантно. Есть ли более элегантный способ просто вернуть имя файла без .txt
и []
?
Поскольку 'Dir []' дает вам массив, вы не должны передавать его в строку. Вместо этого вызовите '.first' или, может быть,' .pop' на него (или многие другие возможности для доступа к элементу массива в зависимости от ваших потребностей), чтобы получить первый элемент, тогда вы можете использовать [эти предложения с помощью 'File.basename () '] (http://stackoverflow.com/questions/374326/how-to-get-filename-without-extension-from-file-path-in-ruby) для получения части нужного имени файла. –
Ожидаете ли вы, что ваш 'Dir []' вернет несколько файлов? Если да, вы хотите получить имена всех из них? –
Да, я хочу вернуть несколько имен, чтобы я мог сопоставить имя файла с элементом в xml. – Lewis909