在Javascript中,我具有以下字符串:
"|John Doe|[user:001] created article |Article Name|[article:001]"
如何使代码将其解析为"<a href="/user/001">John Doe</a> created article <a href="/article/001">Article Name</a>"
?
我已解决的问题代码
基于Agi Hammerthief的建议
var splitedStr = str.split("|");
var filtered = splitedStr.filter(function (el) {
return el !== "";
});
$.each(filtered, function( index, value ) {
var mySubString = value.substr(
value.lastIndexOf("[") + 1,
value.lastIndexOf("]") - 1
);
if (mySubString.trim()) {
filtered[index] = value.replace('['+mySubString+']', '');
var infoLink = mySubString.split(":");
filtered[index - 1] = "<a href='/"+infoLink[0]+"/"+infoLink[1]+"'>" + filtered[index - 1] + "</a>";
}
});
console.log(filtered.join(""));
答案 0 :(得分:0)
您可以使用 regex 和组:
\|([\w ]*)\|\[([\w:]*)\]([\w ]*)\|([\w ]*)\|\[([\w:]*)\]
第1组是'John Doe',第2组是'user:001',第3组是'created article',第4组是'Article Name',第5组是'article:001'
答案 1 :(得分:0)
该行几乎看起来像是Markdown文档中的一个片段(尽管它对超链接使用的格式不相同)。如果要创建字符串而不是从外部来源获取字符串,则可能需要更改格式并使用降价处理器。
或者:
indexOf()
和substring()
)之间的内容,并使用数组中上一项的文本进行链接。