Тройка одинарных кавычек в Groovy - должна ли полученная строка содержать лишние пробелы? - PullRequest
4 голосов
/ 07 октября 2009

Если я использую следующий код Groovy:

description: '''Join the Perl programmers of the Pork Producers
                of America as we hone our skills and ham it up
                a bit.  You can show off your programming chops
                while trying to win a year's supply of pork
                chops in our programming challenge.

                Come and join us in historic (and aromatic),
                Austin, Minnesota.  You'll know when you're
                there!'''

Разве Groovy не должен создавать одну длинную строку с одним пробелом между строками (что означает, что пробелы между строками не будут сохраняться)? Результирующая строка будет:

Присоединяйтесь к программистам Perl Американских производителей свинины, пока мы оттачиваем свои навыки и развиваем их немного ... и т.д.

Строка, которую я получил, содержала все пробелы между строками. Это ожидаемое поведение?

Ответы [ 6 ]

7 голосов
/ 11 октября 2011

С Groovy 1.7.3:

def description = '''\
          Join the Perl programmers of the Pork Producers
          of America as we hone our skills and ham it up
          a bit.  You can show off your programming chops
          while trying to win a year's supply of pork
          chops in our programming challenge.

          Come and join us in historic (and aromatic),
          Austin, Minnesota.  You'll know when you're
          there!'''.stripIndent()
5 голосов
/ 07 октября 2009

Правильно, три строки в кавычках Ли не имеют особой обработки, но поскольку вы используете groovy, достаточно просто получить желаемое поведение:

def description = '''Join the Perl programmers of the Pork Producers
                 of America as we hone our skills and ham it up
                 a bit.  You can show off your programming chops
                 while trying to win a year's supply of pork
                 chops in our programming challenge.

                 Come and join us in historic (and aromatic),
                 Austin, Minnesota.  You'll know when you're
                 there!'''

description.split("\n").collect { it.trim() }.join(" ")  

отпечатков:

Join the Perl programmers of the Pork Producers of America as we hone our skills and ham it up a bit.  You can show off your programming chops while trying to win a year's supply of pork chops in our programming challenge.  Come and join us in historic (and aromatic), Austin, Minnesota.  You'll know when you're there!

Если вы ищете дополнительное форматирование, вы можете проверить синтаксис markdown и библиотеку MarkdownJ . Я на самом деле только что выпустил Grails Markdown плагин вчера, который будет брать форматированный текст уценки и превращать его в HTML для GSP.

2 голосов
/ 30 октября 2009

Чтобы прокрутить предыдущий ответ, если вы сделаете это:

def description = '''\
Join the Perl programmers of the Pork Producers
of America as we hone our skills and ham it up
a bit.  You can show off your programming chops
while trying to win a year's supply of pork
chops in our programming challenge.

Come and join us in historic (and aromatic),
Austin, Minnesota.  You'll know when you're
there!'''

текстовый формат довольно прост в работе. Обратная косая черта (), за которой сразу следует конец строки (EOL), будет проглочена. (См. http://docs.codehaus.org/display/GroovyJSR/Groovy+String+Handling)

2 голосов
/ 07 октября 2009

Да, это ожидаемо. Тройные кавычки - это просто многострочная строка, в которой нет магии для обнаружения и удаления отступов.

1 голос
/ 30 сентября 2011

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

description.replaceAll('\\s+', ' ')

или

(description =~ /\s+/).replaceAll(' ')
0 голосов
/ 07 октября 2009

, если вы просто отмените требование форматирования и отформатируйте его как

description: '''Join the Perl programmers of the Pork Producers
of America as we hone our skills and ham it up
a bit.  You can show off your programming chops
while trying to win a year's supply of pork
chops in our programming challenge.

Come and join us in historic (and aromatic),
Austin, Minnesota.  You'll know when you're
there!'''

тогда вы получите желаемую строку, без необходимости постобработки. Это не выглядит слишком плохо, имхо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...