替换字符串中的新行

Replace new line in string

我有一个逻辑应用程序,它在安全中心出现安全警报时被触发。

我有一个步骤,将输入的子集映射到 JSON 文档并使用它来创建文件。

我需要我正在创建的 JSON 文档全部在一行中,因此我需要确保我替换了输入中的所有控制换行符。

示例输入:

{
    "headers": {
        "Content-Type": "application/json"
    },
    "body": {
        "RemediationSteps": "[\r\n  \"1. Enforce the use of strong passwords\",\r\n  \"2. Add the source IP to NSG block list for 24 hours\",\r\n  \"3. Create an allow list for RDP access in NSG\"\r\n]"
    }
}

我的映射(在设计器中):

replace(triggerBody()?['RemediationSteps'], '\r\n', ' ')

但是,我的 JSON 文档中仍然出现新行。

我遇到了类似的问题。您必须按字面意思使用 "enter"。这是它的样子:

json(concat('{"items":',string(split(outputs('GetAttachmentContent'),'')),'}'))

希望对您有所帮助。

在设计视图中编辑时,逻辑应用会向原始反斜杠添加一个反斜杠以将其取消。如果您转到代码视图,您可以手动将其删除。

发件人:

"value": "@{replace(items('...')['...'],'\\r\\n',' ')}"

收件人:

"value": "@{replace(items('...')['...'],'\r\n',' ')}"

上述解决方案在 Microsoft Flow 中对我不起作用,因为 Web 编辑器添加了额外的反斜杠。没有代码编辑器选项。有效的方法是对字符串进行 uri 编码,然后进行替换:

decodeUriComponent(replace(uriComponent(body('bodyitem')?['bodykey']),'%0A','%3Cbr%3E'))

'%0A' is the '\n' uriencoded and '%3Cbr%3E' is '<br>' uriencoded.

先编码,替换再解码。希望这对您有所帮助!

从字面上看,在表达式中换行对我有用:

replace(triggerBody()?['Body'], '
', '<br/>')