Groovy 1.7.3 adds new functionality to the String
class. For example we can use the expand()
method to expand tabs in a String
to spaces with a default tab stop size of 8. We can use a parameter to use a different tab stop size. But we can also go the other way around.
So if we have a tabular text based on spaces we can convert the String
to a tab separated String
. Here the default tab stop size is also 8, but we can use the parameter to define a different tab stop size.
// Simple ruler to display 0 up to 30 def ruler = (0..30).inject('\n') { result, c -> result += (c % 10) } def stringWithTabs = 'Groovy\tGrails\tGriffon' println ruler println stringWithTabs.expand() // default tab stop is 8 println stringWithTabs.expand(10) // tab stop is 10 // Output: // 0123456789012345678901234567890 // Groovy Grails Griffon / /Groovy Grails Griffon assert 'Groovy Grails Griffon' == stringWithTabs.expand() assert 'Groovy Grails Griffon' == stringWithTabs.expand(10) def stringWithSpaces = 'Hubert Klein Ikkink' def stringWithSpaces10 = 'Hubert Klein Ikkink' println ruler println stringWithSpaces println stringWithSpaces10 // Output: // 0123456789012345678901234567890 // Hubert Klein Ikkink // Hubert Klein Ikkink assert 'Hubert\tKlein\tIkkink' == stringWithSpaces.unexpand() assert 'Hubert\tKlein\tIkkink' == stringWithSpaces10.unexpand(10)