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

时间:2019-04-30 06:53:11

标签: javascript jquery html

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

2 个答案:

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

或者:

  1. 将字符串拆分为“ |” (烟斗)
  2. 过滤掉数组中的空字符串
  3. 使用循环查找“ [”和“]”(indexOf()substring())之间的内容,并使用数组中上一项的文本进行链接。
相关问题