gpt4 book ai didi

gradle - Groovy println 将空字符串打印到控制台而不是正确的字符串

转载 作者:行者123 更新时间:2023-12-02 04:40:58 26 4
gpt4 key购买 nike

我正在解析作为 Gradle JavaExec 任务运行的测试的输出。我想过滤输出,以便在 stdout 中只显示错误(我正在从 Windows 命令行运行任务)。

doLast{} block 中,我将 OutputStream 解析为一个字符串列表,其中每个条目都是一行:

ByteArrayOutputStream baos = new ByteArrayOutputStream()
String log = baos.toString()
List<String> logLines
logLines = new ArrayList<String>(Arrays.asList(log.split('\n')))

然后遍历列表,打印以“E”开头的每一行(表示错误):

for (String entry : logLines){
if (entry.charAt(0) == 'E'){
println "First char == E"
println (entry)
}
}
println "Execution complete!"

我的输出打印了前两个错误,但打印了所有其余错误的空字符串:

First char == E
ERROR More info here
First char == E
ERROR More info here
First char == E

First char == E

First char == E

Execution complete!

为什么 println(entry) 打印空字符串?显然 entry 不是一个空字符串,因为如果它的第一个字符是空的,它就不会通过 bool 条件。

最佳答案

@Roman 给出了答案:println(groovy.json.JsonOutput.toJson(entry)) 显示除了新行\n 之外还使用了回车符\r。因此,解决方案是通过正则表达式 '[\r\n]+' 拆分,这将在每个\n 或\r\n

处分成一个字符串数组

关于gradle - Groovy println 将空字符串打印到控制台而不是正确的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com