file_ext = attach.document_file_name.capture(/\.[^.]*$/)
,但我想有没有一种方法捕获。
我试图从字符串中获取文件扩展名。我还没有该文件。
file_ext = attach.document_file_name.capture(/\.[^.]*$/)
,但我想有没有一种方法捕获。
我试图从字符串中获取文件扩展名。我还没有该文件。
如何:
file_ext = attach.document_file_name[/\.[^.]*$/]
这也应该工作。好戏。从我+1。 – GeekTantra 2010-07-20 17:49:30
请注意,如果没有找到扩展名,它将返回'nil'。如果您更喜欢空字符串,请在行尾添加一个to_s。 – giraff 2010-07-21 18:14:04
你可以做正则表达式匹配的红宝石像这样:
file_ext = (/\.[^.]*$/.match(attach.document_file_name.to_s)).to_s
还有内置的红宝石功能File.extname:
file_ext = File.extname(attach.document_file_name)
(不同之处在于File.extname('hello.')
回报''
,而你的正则表达式将返回'.'
)
+1为什么如果有一个功能完全符合你想要的功能,就会乱用正则表达式 – bta 2010-07-20 18:03:49
如果你想使用正则表达式来做到这一点,你可以简单地做:
irb(main):040:0> "foo.txt"[/\w*.(\w*)/,1]
=> "txt"
没有必要用“Ruby on Rails”或“Regex”来启动所有的问题 - 这就是标签的用途。 – dlras2 2010-07-20 17:50:58