Search code examples
stringjenkinsgroovyjenkins-pipelinejenkins-groovy

Groovy string output on multiple lines without space


I have following string with a lot of characters as an example with Groovy:

def test = '''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
              bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
              cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'''    
println test

Current output:

'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
               bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

Expected output:

How could I modify this instead to print like this so that there would not be those spaces on the left on lines 2 and 3?

 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

I found about line continuation character \ but it seemed that it did not affect output in expected way.

I have also tried at least like this:

def test = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +
            'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' +
            'cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'    

println test

Output with that was:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

My actual use case would be longer descriptions written to Jenkinsfile for couple of parameters and faced this originally there on Jenkins-pipeline but reproduced with this short Groovy-example.


Solution

  • You have a few options:

    1. Just don't line your string up in the editor:
    def test = '''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'''
    
    1. Use stripMargin and the | character:
    def test = '''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                 |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                 |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'''.stripMargin()    
    
    1. Use stripIndent and an escape char:
    def test = '''\
                 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'''.stripIndent()    
    

    I almost exclusively use 2 as it's the happy place between readable and obvious