簡體   English   中英

如何使用 Ruby 刪除字符串中某個字符后的子字符串?

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

我們還可以使用partitionrpartition取決於我們是要使用指定字符的第一個還是最后一個實例:

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.

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