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