[英]Replace final comma in a string with ' & ' - Ruby
我試圖用' & '
替換任何給定字符串中的最終逗號( ', '
)。
我不想使用任何正則表達式。
有什么我可以使用的方法來實現以下偽代碼:
find last x in string
replace last x with y
該sub
方法僅替換第一次出現,這樣你就可以reverse
, sub
和reverse
一次。
"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] = str
用s[idx, len] = str
替換idx
位置處s
中len
長度的子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.