我需要使用 Ruby 从我的项目中提取一个文件名,并从中提取第一个单词。我已经尝试使用在此站点上找到的解决方案进行尝试,但没有成功:
File.basename("/path/to/folder/here_is_my_file.rb").match(/[^_]+/)
这会按预期返回 =>“此处”。
然而,我需要的是在不知道它应该是什么的情况下获取“此处”,因为文件名的第一部分是动态生成的。因此我需要找到一种动态提取它的方法。
如何实现?
最佳答案
您需要的是在路径中找到与模式 *_file.rb
匹配的文件。
为此,请使用 Dir
中的 globbing Ruby 中的类。
matched_files = Dir['/path/to/folder/*_file.rb']
#=> ['/path/to/folder/main_file.rb', '/path/to/folder/sub_file.rb', '/path/to/folder/foo_file.rb']
现在,您可以通过遍历这些文件来提取基本名称:
base_files = matched_files.map { |file| File.basename(file) }
#=> ['main_file.rb', 'sub_file.rb', 'foo_file.rb']
另外,如果你只是想从中提取main、sub、foo,你可以匹配模式来做到这一点:
base_files.map { |file| file.match(/(.*)_file.rb/)[1] }
#=> ['main', 'sub', 'foo']
通过收集文件名,您可以根据条件检查这些名称以执行该文件的任何内容。
祝你好运。
关于ruby-on-rails - 在 Ruby on Rails 中获取项目中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166352/