簡體   English   中英

如何在 Ruby 中使用 .gsub 替換字符串的每 4 個字符?

[英]How to replace every 4th character of a string using .gsub in Ruby?

顯然,這里是初學者。 我需要將一個總和和一個字符串加在一起,從產品中,我必須用下划線替換每個第 4 個字符,最終產品應該如下所示:160_bws_np8_1a

我認為 .gsub 是一種方式,但我可以找到一種方法來格式化 .gsub 中的第一部分,我必須指定每個第 4 個字符。

total = (1..num).sum
final_output = "#{total.to_s}"  + "06bwsmnp851a"
return final_output.gsub(//, "_")

這會起作用:

s = '12345678901234'
s.gsub(/(...)./, '\1_')
#=> "123_567_901_34"

正則表達式匹配捕獲的 3 個字符 ( ... )(括號),后跟另一個字符 ( . )。 每個匹配都被第一個捕獲( \1 )和文字下划線( _ )替換。

s = "12345678901234"

這里有兩種方法可以做到這一點。 兩者都返回

"123_567_901_34"

匹配每四個字符的子字符串並將匹配替換為匹配的前三個字符,后跟下划線

s.gsub(/.{4}/) { |s| s[0,3] << '_' }

將枚舉s.gsub(/./)Enumerator#with_index並用下划線替換每四個字符

s.gsub(/./).with_index { |c,i| i%4 == 3 ? '_' : c }

請參閱采用單個參數且沒有塊的String#gsub的形式。

暫無
暫無

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

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