2014-06-05 10 views

답변

2

"1.5k"와 마찬가지로 .to_i()이 실패하면 k을 마지막 문자로 사용하는 빠른 방법을 쓸 수 있습니다. num_str[-1, 1]을 수행하여 마지막 문자를 가져올 수 있습니다. 여기서 num_str은 원래 문자열입니다.

다른 경우에는 money 보석을 조사하는 것이 좋습니다. num = Money.parse("1,766").

+0

감사합니다. thr 1.5k의 경우 쉽게 1.5m와 1.5b가 될 수 있습니다 ... 모든 차이를 어떻게 처리 할 수 ​​있습니까? –

+0

대소 문자를 구별 할 수 있습니다 ('b', 'm', 'k'). – xzcvtttt

3

레일이없는 루비를 사용하여 작업 할 수 있습니다.

n = "1,200.5k" 
n = n.to_s.gsub(/,+/, '') 
n = (n[-1] == 'k' ? n[0...-1].to_f * 1000 : n).to_i 
puts n 
+0

제안을위한 행크스. thr 1.5k의 경우 쉽게 1.5m와 1.5b가 될 수 있습니다. 어떻게 모든 차이를 다룰 수 있습니까? –

+0

'n = (n [-1] == 'm'?)과 같이 각각의 경우마다 파서를 작성할 수 있습니까? n [0 ...-1] .to_f * 1_000_000 : n) .to_i' – Zhomart