2016-08-09 2 views
0

я это String:Как разбить и удалить пустые пространства, прежде чем получить результат

val str = "9617/20634" 

Таким образом, после раскола я хочу разобрать только 2 значения 9617 & 20634 для того, чтобы вычислить процент. Итак, вместо trim после раскола я могу сделать это раньше?

+0

Вы пробовали? просто откройте REPL и попробуйте – pedrorijo91

+1

'.split (" */* ")'? –

ответ

1

Легче удалить пробелы после раскола, чем раньше. Если вы не собираетесь обрезать его раньше, вот более простой способ сделать это.

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

значение преобразуется в Float, чтобы предотвратить целочисленное деление приводит к 0. val Array(x,y) = ... утверждения просто еще один способ вызова unapplySeq объекта Array.

-1

Для масштабируемого решения можно использовать регулярные выражения:

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 

Это полезно, если вам нужны различные модели использования.

Здесь Вы можете определить соответствие между переменными от вас входа (111, 222) и спичечных групп ((\d+), (\d+)).

+0

Вы пропустите '' 111/222 "' –

+0

Вот что я хотел сделать. Если у пользователя, например, могут быть пробелы слева от /, но не справа, все, что ему нужно сделать, это изменить регулярное выражение + на *. Для разных вариантов использования может потребоваться изменение. Вот почему я назвал «масштабируемое» решение. – dveim

+0

Измененный ответ с * вместо + для пробелов. – dveim

Смежные вопросы