首页 > 解决方案 > 如何在 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>"

我解决的问题代码

根据 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(""));

标签: javascriptjqueryhtml

解决方案


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

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

第 1 组是“John Doe”,2 是“用户:001”,3 是“创建的文章”,4 是“文章名称”,5 是“文章:001”


推荐阅读