[ruby] 쉼표가있는 문자열을 정수로 변환

“1,112”를 1 대신 정수 1112로 변환하는 깔끔한 방법이 있습니까?

하나 있지만 깔끔하지는 않습니다.

"1,112".split(',').join.to_i #=> 1112



답변

이건 어때요?

 "1,112".delete(',').to_i


답변

코드가 올바르게 현지화되는지 확인하거나 사용자가 “국제”표기법에 익숙한 지 확인할 수도 있습니다. 예를 들어 ‘1,112’는 실제로 국가마다 다른 숫자를 의미합니다. 독일에서는 1000 개가 아니라 1 개를 조금 넘는 숫자를 의미합니다.

해당 Wikipedia 기사는 http://en.wikipedia.org/wiki/Decimal_mark에 있습니다. 그러나 현재로서는 제대로 쓰여지지 않은 것 같습니다. 예를 들어 중국인으로서 저는 중국에서 천 단위 구분 기호에 대한 이러한 설명이 어디에서 왔는지 잘 모르겠습니다.


답변

좀 더 편리한

"1,1200.00".gsub(/[^0-9]/,'') 

“1200200”도 제대로 작동합니다.


답변

다음은 다른 방법과 마찬가지로 소수점 이하 자릿수를 제거하지만 작동하는 또 다른 방법입니다.

a = 1,112
b = a.scan(/\d+/).join().to_i => 1112


답변

나는 사용하여 할 것입니다 String#tr:

"1,112".tr(',','').to_i # => 1112


답변

누군가가 쉼표보다 더 많은 하위 항목을 찾고 있다면 나는 다음의 팬입니다.

"1,200".chars.grep(/\d/).join.to_i

성능에 대해서는 잘 모르지만 gsub, 즉 :

"1-200".chars.grep(/\d/).join.to_i


답변

String count = count.replace(",", "");