groovy 在java中将多行字符串转换为单行

gywdnpxw  于 2023-03-07  发布在  Java
关注(0)|答案(1)|浏览(212)

我想使用Scriptrunner for Jira Server(Java/Groovy)将降价表转换为json字符串。
该表存储在问题的描述字段中,当通过rest api/rest/api/2/issue显示问题时,该表的外观如下所示

"description": "|| ||Due Date||Done on||OK/NOK||Remarks||\r\n|*Task 1*| | | | |\r\n|*Task 2*| | | | |\r\n|*Task 3*| | | | |\r\n|*Task 4*| 15/03/23| | | See document X|"

为清楚起见,解释MD中的表格如下所示:
| | 到期日|完成日期|合格/不合格|备注|
| - ------|- ------|- ------|- ------|- ------|
| * * 任务1**| | | | |
| * * 任务2**| | | | |
| * * 任务3**| | | | |
| * * 任务4**|2023年3月15日| | |见文件X|
这将在以下Json中转换(每行一个块)

{
    "ACTION": [{
            "DONE ON": "",
            "DUE DATE": "15/03/23",
            "NOTE": "See document X",
            "TITLE": "Task 4"
        }
         
        ...
    ]
}

我已经计算出要使用的正则表达式:https://regex101.com/r/Ph5f0a/1
请注意,该表将始终是相同的,相同数量的行和列与此特定的格式。
问题是,当我显示问题描述的内容时,\r\n会被解释为换行符。

    • 是否有办法将内容显示为单行"原始"字符串,以便我的正则表达式可以工作?**

下面是我现在使用的代码片段。

import com.atlassian.jira.component.ComponentAccessor
import java.io.IOException
import com.atlassian.jira.issue.Issue
import groovy.json.*
import org.apache.log4j.Level

import java.util.regex.Matcher;
import java.util.regex.Pattern;

log.setLevel(Level.INFO);

def issue = issueManager.getIssueObject('PTIJ-68')

def description_raw = issue.getDescription()

log.info("issue.getDescription() = ${issue.getDescription().toString()}")

谢谢。

m1m5dgzv

m1m5dgzv1#

一些带有CSV处理的简单正则表达式:

import groovy.json.JsonOutput

String description = "|| ||Due Date||Done on||OK/NOK||Remarks||\r\n|*Task 1*| | | | |\r\n|*Task 2*| | | | |\r\n|*Task 3*| | | | |\r\n|*Task 4*| 15/03/23| | | See document X|" 

List data = []

description.splitEachLine( /\*?\|+\*?/ ){ _, title, dueDate, doneOn, ok_nok, remarks ->
  data << [ 'TTILE':title, "DUE DATE":dueDate.trim(), "DONE ON":doneOn.trim(), "NOTE":remarks.trim() ]
}

data.remove 0 // skip the head

JsonOutput.prettyPrint JsonOutput.toJson( ACTION:data )

印刷品:

{
    "ACTION": [
        {
            "TTILE": "Task 1",
            "DUE DATE": "",
            "DONE ON": "",
            "NOTE": ""
        },
        {
            "TTILE": "Task 2",
            "DUE DATE": "",
            "DONE ON": "",
            "NOTE": ""
        },
        {
            "TTILE": "Task 3",
            "DUE DATE": "",
            "DONE ON": "",
            "NOTE": ""
        },
        {
            "TTILE": "Task 4",
            "DUE DATE": "15/03/23",
            "DONE ON": "",
            "NOTE": "See document X"
        }
    ]
}

相关问题