Groovy中println函数为何输出额外空行?如何解决?
解决Groovy输出额外空行的问题
你的问题核心不是println或print的问题,而是extractedLine变量本身大概率包含了换行符(比如从文件、控制台输入或其他流读取时附带的\n/\r\n),导致输出时先打印了这个换行符,再显示目标内容。
验证问题根源
先确认extractedLine的实际内容,用dump()方法查看变量的原始信息:
println extractedLine.dump()
输出里如果能看到\n或\r\n,就说明是变量自带的换行符导致的空行。
解决方法
1. 去除首尾所有空白(推荐)
用trim()方法可以一次性去掉字符串首尾的换行符、空格、制表符等不可见空白:
def myline = extractedLine.trim() println 'myline:' + myline
2. 仅去除换行符
如果需要保留字符串中间的空白,只去掉换行符,用replaceAll()匹配换行符并替换为空:
def myline = extractedLine.replaceAll(/[\r\n]/, '') println 'myline:' + myline
另外注意:Groovy里定义字符串变量的正确写法是用def或首字母大写的String,你的代码里string myline=extractedLine是语法错误,修正为def myline = extractedLine或String myline = extractedLine会更规范。
内容的提问来源于stack exchange,提问作者liuxu
相关产品推荐
相关产品推荐

