.split()和.replace()一个字符串值,用于过滤掉JavaScript中的所需文本

时间:2017-02-06 06:49:35

标签: javascript angularjs

我正在尝试过滤掉文本字符串中的主题标签,将其拆分,然后删除不需要的HTML标记

我没有得到正确的输出,我不太确定我在哪里犯错,并且非常感谢你的指导。

这是文本字符串值的示例:

"<a href=\"https://twitter.com/search?q=fnb\" target=\"_blank\">#fnb</a>, <a href=\"https://twitter.com/search?q=mobilesimcard\" target=\"_blank\">#mobilesimcard</a>, <a href=\"https://twitter.com/search?q=what\" target=\"_blank\">#what</a>, <a href=\"https://twitter.com/search?q=refugeechild\" target=\"_blank\">#refugeechild</a>"

这是我到目前为止的代码:

var str = "<a href=\"https://twitter.com/search?q=fnb\" target=\"_blank\">#fnb</a>, <a href=\"https://twitter.com/search?q=mobilesimcard\" target=\"_blank\">#mobilesimcard</a>, <a href=\"https://twitter.com/search?q=what\" target=\"_blank\">#what</a>, <a href=\"https://twitter.com/search?q=refugeechild\" target=\"_blank\">#refugeechild</a>";

var array = [];
var parts = str.split('target=\"_blank\">', '');

parts.forEach(function (part) {
	var rem1 = part.replace('</a>', '');
	array.push(rem1)
})
var value = array;
console.log(value);

我想要的输出是:#fnb,#mobsimcard,#what,#remageechild

我的str.split()工作不正常,我相信我也必须扩展.replace()

谢谢!

2 个答案:

答案 0 :(得分:2)

具有正则表达式的解决方案:

var str = "<a href=\"https://twitter.com/search?q=fnb\" target=\"_blank\">#fnb</a>, <a href=\"https://twitter.com/search?q=mobilesimcard\" target=\"_blank\">#mobilesimcard</a>, <a href=\"https://twitter.com/search?q=what\" target=\"_blank\">#what</a>, <a href=\"https://twitter.com/search?q=refugeechild\" target=\"_blank\">#refugeechild</a>";
var array = str.match(/#[a-z-_]+/ig)

console.log(array);

这个正则表达式只是一个非常简单的正则表达式,在野外有更好的表达,如Best HashTag Regex

答案 1 :(得分:1)

尝试数组map()方法

工作演示:

&#13;
&#13;
var str = "<a href=\"https://twitter.com/search?q=fnb\" target=\"_blank\">#fnb</a>, <a href=\"https://twitter.com/search?q=mobilesimcard\" target=\"_blank\">#mobilesimcard</a>, <a href=\"https://twitter.com/search?q=what\" target=\"_blank\">#what</a>, <a href=\"https://twitter.com/search?q=refugeechild\" target=\"_blank\">#refugeechild</a>";

var resArray = [];
var parts = str.split('</a>');

var array = parts.map(function(item) {
  return item.split('>')[1];
});

for(var i = 0; i < array.length-1; i++) {
  resArray.push(array[i]);
}

var value = resArray;
console.log(value);
&#13;
&#13;
&#13;