簡體   English   中英

如何從Rails 4中的字符串中刪除文件擴展名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM