Есть ли оператор, который может обрезать отступ в многострочной строке?
Это действительно хорошо в Groovy:
println '''First line,
second line,
last line'''
Многострочные строки. Я видел в некоторых языках инструменты, которые делают еще один шаг и могут удалить отступ строки 2 и т. Д., Чтобы оператор вывел:
First line, second line, last line
и не
First line, second line, last line
Это возможно в Groovy?
1 ответ
Ты можешь использовать stripMargin()
за это:
println """hello world!
|from groovy
|multiline string
""".stripMargin()
Если вы не хотите, чтобы ведущий символ (как в данном случае, как труба), есть stripIndent()
также, но строка должна быть отформатирована немного по-другому (минимальный отступ важен)
println """
hello world!
from groovy
multiline string
""".stripIndent()
из документов stripIndent
Уберите начальные пробелы из каждой строки в строке. Строка с наименьшим количеством начальных пробелов определяет число для удаления. Строки, содержащие только пробелы, игнорируются при расчете количества начальных пробелов для удаления.
Обновление:
Что касается использования оператора для этого, я лично не рекомендовал бы делать это. Но для записей это можно сделать с помощью механизма расширения или категорий (проще и сложнее). Пример категории выглядит следующим образом:
class StringCategory {
static String previous(String string) { // overloads `--`
return string.stripIndent()
}
}
use (StringCategory) {
println(--'''
hello world!
from groovy
multiline string
''')
}