Подтвердить что ты не робот

Scala разделительные пробелы в пробе

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

scala> println("<"+"  abc  ".trim+">")
<abc>

Ответ 3

Разделить 'n' trim 'n' mkString (например, rock'n'roller):

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

Ответ 4

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

val trimmed = str.lines map { s => s.reverse.dropWhile ( c => c == ' ').reverse.mkString(System.getProperty("line.seperator"))

Ответ 5

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