[英]Ruby how to increment a string number
如何在 Ruby 中自信地增加字符串編號? 我知道我可以調用"1".next
並生成"2"
但這不適用於負數。
"-3".next
=> "-4"
如何調用以增加正負字符串數字? 我想以字符串形式返回值。
您可以將該字符串轉換為整數,調用#next
然后將其轉換回字符串
'-3'.to_i.next.to_s
你可以只做("-3".to_i + 1).to_s
但這並沒有考慮浮點值(如果你關心的話)。 您可以使用塊調用gsub
並與正則表達式匹配以進行轉換和遞增。 next
不適用於負數,因為它只計算最右邊的數字並且不注意減號字符。 下面匹配整數或浮點數,並根據整數類型增加它們:
INCREMENTAL = 1
def increment_str(str)
str.gsub(/(-)?\d+(.\d+)?/) { |x| x.include?(".") ? x.to_f + INCREMENTAL : x.to_i + INCREMENTAL }
end
increment_str("-3") => "-2"
increment_str("3") => "4"
increment_str("-3.0") => "-2.0"
increment_str("3.0") => "4.0"
您的答案取決於輸入是整數還是浮點數。 在每種情況下,將其轉換為適當的數字類型( to_i
到to_f
),遞增 1,然后轉換回字符串。 例如:
['-1.23', '-1', '0', '1', '1.23'].each do |str|
int_str_plus_1 = (str.to_i + 1).to_s
float_str_plus_1 = (str.to_f + 1).to_s
puts [str, int_str_plus_1, float_str_plus_1].join("\t")
end
印刷:
-1.23 0 -0.22999999999999998
-1 0 0.0
0 1 1.0
1 2 2.0
1.23 2 2.23
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.