首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript Azure函数中,使用常用方法替换“”不起作用

在JavaScript Azure函数中,使用常用方法替换“”不起作用
EN

Stack Overflow用户
提问于 2018-12-10 02:43:58
回答 1查看 291关注 0票数 1

目标

将从Telligent (一个extranet平台)提取的HTML转换为纯文本并发送到Slack

设置

当事件发生时会触发Telligent网络钩子。Azure Logic接收事件JSON。JSON值在HTML中。Azure管道中的JavaScript Azure函数将JSON值转换为纯文本。管道中的最后一步是将纯文本张贴在Slack中。

Azure函数的传入代码示例

代码语言:javascript
复制
"body": "<p>&quot; &#39;</p><div style=\"clear:both;\"></div>"

变换法

这是Azure函数中的基本代码。我忽略了那些看起来与这个问题无关的部分,但是如果有必要的话可以提供整个脚本。

代码语言:javascript
复制
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();
};

结果

单引号被成功地替换,当张贴在板条上时会精确地解析。

下面的双引号替换方法在Azure函数中抛出一个Status: 500 Internal Server Error

不成功的替换方法

代码语言:javascript
复制
"\""
'"'
&quot;
"'"'"
"["]"
"(")"

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

代码语言:javascript
复制
var replace = "\""
...
var noHtmlEncodeDoubleQuote = noHtmlEncodeSingleQuote.replace(/&quot;/g, replace);

代码似乎是正确的,因为当我用类似于&quot;的东西替换abc时,替换是成功的。

谢谢

请原谅我的JavaScript,因为我不是一个程序员,并试图简化我的工作流程。但是,我很感谢关于代码或我的整个方法的任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-10 03:23:26

通常,您不希望尝试使用正则表达式或字符串替换来解析HTML。有太多的事情可能会出错。看看这个现在著名的StackOverflow答案。 (甚至是制成T恤衫.)

相反,您应该使用一种专门为此目的而构建的技术。如果您是在web浏览器中,您可以使用这个问题答案中描述的技术。但是在Azure函数中,JavaScript不是在浏览器中运行,而是在Node环境中运行。因此,您需要使用一个库,如拜拜htmlparser2 (和其他)。

下面是一个使用Cheerio的示例:

代码语言:javascript
复制
var cheerio = require('cheerio');
var text = cheerio.load(html.body).text();

此外,关于这一部分:

..。因为我不是程序员..。

是的你是。你现在显然是在编程。任何编写代码的人都是程序员。没有俱乐部也没有秘密握手。我们都是这样开始的。很好的工作,问问题,祝你的旅程好运!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53698843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档