在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>"
?
我已解决的问题代码
根据阿吉锤贼的建议
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(""));
这一行几乎看起来像是 Markdown 文档中的片段(尽管它对超链接不使用相同的格式(。如果要创建字符串而不是从外部源获取它,则可能需要更改格式并使用降价处理器。
交互:
- 在"|"上拆分字符串(管道(
- 过滤掉数组中的空字符串
- 使用循环查找 "[" 和 "]" (
indexOf()
和substring()
( 之间的内容,并使用数组中上一项的文本建立链接。
您可以使用正则表达式和组:
|([w ]*)|[([w:]*)]([w ]*)|([w ]*)|[([w:]*)]
名称",5 是"文章:001">