gpt4 book ai didi

javascript - 使用常用方法将“替换为”在 JavaScript Azure Function 中不起作用

转载 作者:行者123 更新时间:2023-11-30 14:15:13 24 4
gpt4 key购买 nike

目标

将从 Telligent(外联网平台)提取的 HTML 转换为纯文本并发送到 Slack

设置

事件发生时会触发 Telligent Webhook。 Azure 逻辑应用接收事件 JSON。 JSON 值采用 HTML 格式。 Azure 逻辑应用管道内的 JavaScript Azure 函数将 JSON 值转换为纯文本。管道中的最后一步在 Slack 中发布纯文本。

Azure 函数传入代码的示例

"body": "<p>&quot; &#39;</p><div style=\"clear:both;\"></div>"

转换方法

这是Azure Function中的基本代码。我遗漏了看起来与这个问题无关的部分,但如果需要的话可以提供整个脚本。

module.exports = function (context, data) {
var html = data.body;

// Change HTML to plain text
var text = JSON.stringify(html.body);
var noHtml = text.replace(/<(?:.|\n)*?>/gm, '');
var noHtmlEncodeSingleQuote = noHtml.replace(/&#39;/g, "'");
var noHtmlEncodeDoubleQuote = noHtmlEncodeSingleQuote.replace(/&quot;/g, "REPLACEMENT");

// Compile body for Slack
var readyString = "Slack text: " + noHtmlEncodeDoubleQuote;

// Response of the function to be used later
context.res = {
body: readyString
};

context.done();
};

结果

在 Slack 中发布时,单引号已成功替换并准确解析。

以下双引号替换方法会在 Azure 函数中引发状态:500 内部服务器错误

不成功的替换方法

"\""
'"'
&quot;
"'"'"
"["]"
"(")"

将这些替换方法放入它们自己的 var 中也会引发相同的错误。例如:

var replace = "\""
...
var noHtmlEncodeDoubleQuote = noHtmlEncodeSingleQuote.replace(/&quot;/g, replace);

代码看起来是正确的,因为当我将 " 替换为 abc 时,替换成功。

谢谢

请原谅我的 JavaScript,因为我不是程序员,我正在寻求简化我的工作流程。不过,我很感激任何有关代码或我的整个方法的建议。

最佳答案

通常,您不想尝试使用正则表达式或字符串替换来解析 HTML。可能出错的事情太多了。 See this now famous StackOverflow answer. (甚至是 made into a T-Shirt 。)

相反,您应该使用专门为此目的构建的技术。如果您使用的是网络浏览器,则可以使用 this question 的答案中描述的技术。 。但在 Azure Functions 中,JavaScript 不在浏览器中运行,而是在 Node JS 环境中运行。因此,您需要使用诸如Cheerio之类的库或htmlparser2 (和其他)。

以下是使用 Cheerio 的示例:

var cheerio = require('cheerio');
var text = cheerio.load(html.body).text();

另外,关于这部分:

... as I am not a programmer ...

是的,你是。显然你现在正在编程。任何写代码的人都是程序员。没有俱乐部或 secret 握手。我们都是这样开始的。提问得好,祝你旅途顺利!

关于javascript - 使用常用方法将“替换为”在 JavaScript Azure Function 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53698843/

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