我猜这是一个众所周知的问题,并且有一种有效的解决方法。
我得到的输出中包含固定数量的空格。我正在进行字符串比较测试,例如下面的测试,作为单元测试的一部分。有没有办法在不使用stripIndent()等修改字符串的情况下通过它?
注意,下面的测试应该在多行字符串中testStart和testEnd之间的看似空的行中有4个空格。但是,堆栈溢出可能会将其删除吗?
String singleLine = 'testStart\n \ntestEnd'
String multiLine =
'''
testStart
testEnd
'''
println singleLine
println multiLine
assert singleLine == multiLine
答案 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
中的字符testStart
。 multiLine
中的第一个字符是换行符,因为字符串在开始'''
之后立即开始,而后面的第一个字符是换行符。您在字符串的末尾有相同的问题。您可以通过以下几种方式解决这个问题:
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/