簡體   English   中英

Ruby 如何增加一個字符串數

[英]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_ito_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.

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