[英]How do I remove a substring after a certain character in a string using Ruby?
如何使用 Ruby 刪除字符串中某個字符后的子字符串?
new_str = str.slice(0..(str.index('blah')))
我發現"Part1?Part2".split('?')[0]
更容易閱讀。
我很驚訝沒有人建議使用'gsub'
irb> "truncate".gsub(/a.*/, 'a')
=> "trunca"
bs版本的gsub可用於修改字符串。
str = "Hello World"
stopchar = 'W'
str.sub /#{stopchar}.+/, stopchar
#=> "Hello W"
一種特殊情況是,如果您有多個相同字符的出現,並且您想要從最后一個匹配項刪除到結尾(而不是第一個)。 按照Jacob的建議,你只需要使用rindex
而不是index
因為rindex
獲取字符串中字符的索引但是從結尾開始。 像這樣的東西:
str = '/path/to/some_file'
puts str.slice(0, str.index('/')) # => ""
puts str.slice(0, str.rindex('/')) # => "/path/to"
我們還可以使用partition
和rpartition
取決於我們是要使用指定字符的第一個還是最后一個實例:
string = "abc-123-xyz"
last_char = "-"
string.partition(last_char)[0..1].join #=> "abc-"
string.rpartition(last_char)[0..1].join #=> "abc-123-"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.