Czy istnieje zgrabna metoda zamiany liczby „1112” na liczbę całkowitą 1112 zamiast 1?
Mam jeden, ale nie schludny:
"1,112".split(',').join.to_i #=> 1112
Odpowiedzi:
Co powiesz na to?
"1,112".delete(',').to_i
Możesz także chcieć upewnić się, że kod jest poprawnie zlokalizowany lub upewnić się, że użytkownicy są przyzwyczajeni do notacji „międzynarodowej”. Na przykład „1112” oznacza w rzeczywistości różne liczby w różnych krajach. W Niemczech oznacza to liczbę nieco powyżej jednego zamiast tysiąca i coś więcej.
Odpowiedni artykuł Wikipedii znajduje się pod adresem http://en.wikipedia.org/wiki/Decimal_mark . Wydaje się jednak, że w tej chwili jest źle napisany. Np. Jako Chińczyk nie jestem pewien, skąd się bierze opis o separatorze tysiąca w Chinach.
Niektóre wygodniejsze
"1,1200.00".gsub(/[^0-9]/,'')
sprawia, że "1 200 200" również działa poprawnie
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f
.
"1,1200.00"
na "1120000"
? Czy nie chcesz po prostu zamienić ,
(lub, w zależności od lokalizacji, .
)? Ponadto nie konwertuje to na liczbę całkowitą lub zmiennoprzecinkową, tylko ciąg bez ograniczników.
Zrobiłbym używając String#tr
:
"1,112".tr(',','').to_i # => 1112
String count = count.replace(",", "");