Ruby 2.4 hat eine Methode Integer # digits , die zurückgibt ein Array mit den Ziffern.
%Vor%BEARBEITEN:
Um negative Zahlen zu verarbeiten (danke @MatzFan), verwende den absoluten Wert. Integer # abs
%Vor%Obwohl die top-voting-Schleife nett ist, ist sie nicht sehr Ruby und wird für große Zahlen langsam, die .to_s ist eine eingebaute Funktion und wird daher viel schneller sein. FAST universal eingebaute Funktionen werden viel schneller sein als konstruierte Schleifen oder Iteratoren.
Wenn Sie Regex nicht verwenden möchten, können Sie diese Methode verwenden:
%Vor%Nebenbemerkung für Ruby 2.4 +
Ich habe einige Benchmarks für die verschiedenen Lösungen durchgeführt, und Math.log10(x).to_i + 1
ist tatsächlich viel schneller als x.to_s.length
. Der Kommentar von @ Wayne Conrad ist nicht mehr aktuell. Die neue Lösung mit digits.count
liegt insbesondere bei größeren Zahlen weit zurück: