2016-08-09 148 views

Antwort

1

Es ist einfacher, Leerzeichen nach der Teilung als zuvor zu entfernen. Es sei denn, es wird von Ihnen erwartet, es vorher zu schneiden, hier ist eine einfachere Art, es zu tun.

val Array(x, y) = "9617/20634".split("/").map(_.trim.toFloat) 
val p = x/y * 100 

Werte werden zu Float umgewandelt ganzzahlige Division zu verhindern auf 0. Die val Array(x,y) = ... Aussage führt, ist nur eine andere Art unapplySeq des Array-Objekt aufzurufen.

-1

Für skalierbare Lösung könnte man regexps verwenden:

scala> val r = """(\d+) */ *(\d+)""".r 
r: scala.util.matching.Regex = (\d+) +/ +(\d+) 

scala> "111 /222" match { 
    case r(a, b) => println(s"Got $a, $b") 
    case _ => 
} 
Got 111, 222 

Dies ist nützlich, wenn Sie unterschiedliche Nutzungsmuster benötigen.

Hier definieren Sie Entsprechung zwischen Variablen von Ihnen Eingang (111, 222) und Match-Gruppen ((\d+), (\d+)).

+0

Sie vermissen '" 111/222 "' –

+0

Das wollte ich machen. Wenn Benutzer beispielsweise Leerzeichen links von /, aber nicht rechts haben, muss er nur regex, + zu * ändern. Für verschiedene Anwendungsfälle können verschiedene Modifikationen erforderlich sein. Deshalb habe ich "skalierbare" Lösung genannt. – dveim

+0

Geänderte Antwort mit * anstelle von + für Leerzeichen. – dveim