Скала полоса тянущийся пробел - PullRequest
21 голосов
/ 18 мая 2011

Метод Scala String (в классе StringOps) stripMargin удаляет начальные пробелы из каждой строки многострочного String вплоть до символа канала (|) включительно (или другого обозначенного разделителя) ).

Существует ли эквивалентный метод удаления конечных пробелов из каждой строки?

Я быстро просмотрел скаладоки, но не смог найти.

Ответы [ 6 ]

27 голосов
/ 18 мая 2011

Java String метод trim удаляет пробелы из начала и конца:

scala> println("<"+"  abc  ".trim+">")
<abc>
25 голосов
/ 18 мая 2011

Вы можете легко использовать регулярное выражение для этого:

input.replaceAll("""(?m)\s+$""", "")

Префикс (?m) в регулярном выражении делает его многострочным регулярным выражением. \s+ соответствует 1 или более пробельным символам и $ концу строки (из-за многострочного флага).

6 голосов
/ 19 мая 2011

Split 'n' trim 'n' mkString (как рок-н-роллер):

val lines = """ 
This is 
 a test 
  a   foolish   
    test   
    a
test 
t 
 """

lines.split ("\n").map (_.trim).mkString ("\n")

res22: String = 

This is
a test
a   foolish
test
a
test
t
2 голосов
/ 18 мая 2011

Это может быть не самый эффективный способ, но вы также можете сделать это:

val trimmed = str.lines map { s => s.reverse.dropWhile ( c => c == ' ').reverse.mkString(System.getProperty("line.seperator"))
1 голос
/ 18 мая 2011

Возможно: s.lines.map(_.reverse.stripMargin.reverse).mkString("\n") или System.getProperty("line.separator") вместо "\n"?!

0 голосов
/ 31 января 2018
str.reverse.dropWhile(_ == ' ').reverse
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...