【问题标题】:Replace new line in string替换字符串中的新行
【发布时间】:2019-01-11 18:12:22
【问题描述】:

我有一个逻辑应用,当安全中心出现安全警报时触发。

我有一个步骤,我将输入的子集映射到 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 文档中仍有新行。

【问题讨论】:

  • 我认为您的替换功能没有任何问题。您是否检查过执行替换的操作的原始输出?你还能看到那里的 '\r\n' 子字符串吗?
  • triggerBody() 是否返回实际的 JSON?一些触发器发出 base64 内容。

标签: azure azure-logic-apps securitycenter


【解决方案1】:

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

发件人:

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

收件人:

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

【讨论】:

  • 谢谢!有同样的问题,这是我能找到的唯一对我有用的解决方案。只需转到代码视图并在那里修复它,如此简单......
【解决方案2】:

我遇到了类似的问题。您必须从字面上使用“输入”。这是它的样子:

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

希望对你有帮助。

【讨论】:

  • 您好 Felipe,您可以通过突出显示代码并单击编辑器顶部的 {} 按钮来格式化您的代码。您可以使用底部的按钮编辑您的答案。
【解决方案3】:

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

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

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

首先编码,替换然后解码。希望这会有所帮助!

【讨论】:

    【解决方案4】:

    在表达式中换行对我有用:

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

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2021-09-26
      • 2010-10-03
      • 1970-01-01
      • 2019-06-30
      相关资源
      最近更新 更多