Groovy多行字符串不识别只有空格的行

时间:2016-09-12 20:44:52

标签: groovy

我猜这是一个众所周知的问题,并且有一种有效的解决方法。

我得到的输出中包含固定数量的空格。我正在进行字符串比较测试,例如下面的测试,作为单元测试的一部分。有没有办法在不使用stripIndent()等修改字符串的情况下通过它?

注意,下面的测试应该在多行字符串中testStart和testEnd之间的看似空的行中有4个空格。但是,堆栈溢出可能会将其删除吗?

String singleLine = 'testStart\n    \ntestEnd'

String multiLine =
'''
testStart

testEnd
'''

println singleLine
println multiLine
assert singleLine == multiLine

2 个答案:

答案 0 :(得分:3)

String singleLine = 'testStart\n    \ntestEnd'

String multiLine =
'''
testStart
(assume there are 4 spaces on this line)
testEnd
'''

println singleLine
println multiLine
assert singleLine == multiLine

该断言应该失败。 singleLine中的第一个字符是t中的字符testStartmultiLine中的第一个字符是换行符,因为字符串在开始'''之后立即开始,而后面的第一个字符是换行符。您在字符串的末尾有相同的问题。您可以通过以下几种方式解决这个问题:

String multiLine =
'''\
testStart
(assume there are 4 spaces on this line)
testEnd\
'''

或者:

String multiLine =
'''testStart
(assume there are 4 spaces on this line)
testEnd'''

答案 1 :(得分:0)

这是由intelliJ默认设置引起的。我现在已经解决了。

http://blog.darrenscott.com/2015/01/24/intellij-idea-14-how-to-stop-stripping-of-trailing-spaces/