[英]How can I remove a filename extension from a string in Rails 4?
我正在嘗試從具有以下結構的字符串中刪除擴展名:
name.stl
我發現我可以使用basename
方法來獲取字符串。 問題是我沒有使用文件路徑,我已經有了名字的字符串。 我只需要從字符串中刪除擴展名。
在我看來,正則表達式將是一個很好的選擇,可以檢測點並刪除從它到結尾的所有內容。
如何在Ruby on Rails 4上使用正則表達式執行此操作?
有幾種方法,這里有2種,有rpartition
和正則表達式:
s = "more.name.stl"
puts s.sub(/\.[^.]+\z/, '') # => more.name
puts s.rpartition('.').first # => more.name
請參閱IDEONE演示
rpartition
方式很明確,正則表達式匹配:
\\.
- 一個點 [^.]+
- 除點之外的一個或多個字符 \\z
- 字符串結尾。 只需使用內置方法。 這些將在不同的操作系統之間正常工作:
filename = '/path/to/foo.bar'
File.basename(filename) # => "foo.bar"
File.extname(filename) # => ".bar"
File.basename(filename, File.extname(filename)) # => "foo"
並且,如果您需要包含目錄:
File.dirname(filename) # => "/path/to"
如果你不在乎,那么簡單的split('.')
就可以了:
'foo.bar'.split('.').first # => "foo"
要么
'foo.bar'[/^[^.]+/] # => "foo"
File.basename 'name.stl', '.stl'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.