如何在 JavaScript 中解析包含管道和括号的格式化字符串



在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 文档中的片段(尽管它对超链接不使用相同的格式(。如果要创建字符串而不是从外部源获取它,则可能需要更改格式并使用降价处理器。

交互:

  1. 在"|"上拆分字符串(管道(
  2. 过滤掉数组中的空字符串
  3. 使用循环查找 "[" 和 "]" ( indexOf()substring() ( 之间的内容,并使用数组中上一项的文本建立链接。

您可以使用正则表达式和组:

|([w ]*)|[([w:]*)]([w ]*)|([w ]*)|[([w:]*)]

第 1 组是"John Doe",2 是"用户:001",3 是"创建的文章",4 是"文章

名称",5 是"文章:001">

最新更新