簡體   English   中英

用'&'替換字符串中的最終逗號-Ruby

[英]Replace final comma in a string with ' & ' - Ruby

我試圖用' & '替換任何給定字符串中的最終逗號( ', ' )。

我不想使用任何正則表達式。

有什么我可以使用的方法來實現以下偽代碼:

find last x in string
replace last x with y   

sub方法僅替換第一次出現,這樣你就可以reversesubreverse一次。

"Ruby on Rails, Ruby, String, Replace".reverse.sub(',', '& ').reverse

一站式解決方案:

>> "Lions, tigers, bears".tap{|s| s[s.rindex(', '), 2] = ' & '}
=> "Lions, tigers & bears"
  • tap將變量名分配給其塊內的字符串文字。 如果已經為字符串分配了名稱,則沒有必要。
  • rindex在其調用的字符串中找到其參數的最后一次出現。
  • s[idx, len] = strs[idx, len] = str替換idx位置處slen長度的子str

也許:

string = string.rpartition("&").map do |x|
    if x == "&"
        ","
    else
        x
    end
end.join("")

作品?

您可以使用捕獲最后一個逗號周圍的組來執行此操作:

>> "one, two, three, four".gsub(/(.*),(.*)/, '\1 &\2')
=> "one, two, three & four"

這些組將在最后一個組附近匹配,因為第一個捕獲組(第一個(.*) )是貪婪的。 .*將盡可能多的文本可能的,這意味着它會匹配到最后一場比賽,那么第二捕獲組(.*)將匹配剩下什么。

然后,替換字符串( '\\1 &\\2' )將捕獲組文本放在&周圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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