3 Stimmen

Scala int-Wert von String-Zeichen

Ich möchte nur die Ziffern einer BigInt summieren. Ich kann

scala> "1 2 3".split(" ").map(_.toInt).sum
res23: Int = 6

Also habe ich versucht

scala> BigInt(123).toString().map(_.toInt).sum
res24: Int = 150

Das funktioniert nicht, weil die Zeichen auf ihre Unicode-Werte abgebildet werden.

Beide der folgenden Arbeit, aber gibt es einen eleganteren Weg als die Verwendung der statischen Java-Methode oder eine zusätzliche toString-Konvertierung?

BigInt(123).toString().map(Character.getNumericValue(_)).sum
BigInt(123).toString().map(_.toString.toInt).sum

(Ich habe es auch mit einer rekursiven Funktion gemacht, die Zeichenketten ganz umgeht, aber ich bin hier an einem knappen Einzeiler interessiert).

1voto

Luigi Plinge Punkte 49666

Ich habe gerade bemerkt, dass die RichChar-Klasse eine getNumericValue-Methode hat, so dass die Antwort lauten würde

BigInt(123).toString().map(_.getNumericValue).sum

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X