Groovy多行字符串如何保留换行、缩进并输出含转义字符的单行格式
解决Groovy多行字符串转带转义字符单行字符串的问题
嘿,作为Groovy新手碰到这个需求完全正常,我给你两个简单实用的办法,轻松实现把多行字符串里的换行、制表符转成可见的\n、\t,最终输出单行字符串:
方法1:手动替换特殊字符
直接用Groovy的replaceAll方法,把实际的换行符和制表符替换成对应的转义字符串。代码示例:
def multilineString = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.""" // 替换换行符为"\n",制表符为"\t" def singleLineResult = multilineString.replaceAll('\n', '\\n').replaceAll('\t', '\\t') println singleLineResult
这里要注意,Groovy里字符串中的反斜杠需要转义,所以我们用\\n来表示最终要输出的\n字符。
方法2:用inspect()方法一键处理
Groovy内置了inspect()方法,它会自动把字符串中的所有特殊字符转换成转义序列,非常省心。唯一需要注意的是,这个方法会给整个字符串包裹双引号,所以如果不需要外层引号的话,我们可以用substring去掉:
def multilineString = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.""" def escapedString = multilineString.inspect() // 去掉首尾的双引号 def singleLineResult = escapedString.substring(1, escapedString.length() - 1) println singleLineResult
这个方法的好处是,除了换行和制表符,它还会自动处理其他特殊字符(比如双引号"会被转成\"),适合需要处理多种特殊字符的场景。
你可以自己测试一下,比如加个制表符进去:
def testStr = """Hello\tGroovy Nice to meet you!""" println testStr.inspect().substring(1, testStr.inspect().length()-1) // 输出:Hello\tGroovy\nNice to meet you!
内容的提问来源于stack exchange,提问作者hjuk12
相关产品推荐
相关产品推荐

