吉他和弦自定义标签简单解析器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吉他和弦自定义标签简单解析器相关的知识,希望对你有一定的参考价值。

我使用markdown存储带和弦的歌词,效果很好。 https://codepen.io/rrob/pen/GxYgOP使用*标记<em>用于和弦并使用css定位它。

但现在我想要它在演示文稿中并且markdown解析在那里很复杂。我尝试用str.replace插入标签,但我不能关闭标签。

text text *chord* text text 

替换为:

text text <em>chord<em> text text 

我当然需要:

text text <em>chord</em> text text 

请问您是否知道一些解析自定义标签的简单解决方案? javascript / Jquery。

答案

您可以使用Regex来实现您的需求。您可以捕获*字符以及它们之间的字符,然后用*标签替换<em>。像这样的东西:

var input = 'text text *chord* text text *chord* text';
var output = input.replace(/*(.*?)*/g, '<em>$1</em>');

console.log(output);
另一答案

看看下面的功能。它迭代字符串中的每个字符,并在需要时用<em></em>替换'*'。

/**
 * parse function parse the input raw string and replaces the
 * the star(*) with <em> and </em> where needed.
 * @returns Returns the replaced string.
 */
function parse(str) {
    var ret = ""; // initialize the string.

    for (var x = 0; x < str.length; ++x) {
        if (str[x] == '*') { // The opening.
            ret += "<em>";
            ++x;

            for(; x < str.length; ++x) {
                if (str[x] == '*') { // and the ending is here.
                    ret += "</em>";
                    break;
                } else {
                    ret += str[x];
                }
            }
        } else {
            ret += str[x];
        }
    }

    return ret;
}

console.log(parse("Hello *JS*")); // outputs 'Hello <em>JS</em>

var element = document.querySelector('.chords');
element.innerhtml = parse(element.innerText);

以上是关于吉他和弦自定义标签简单解析器的主要内容,如果未能解决你的问题,请参考以下文章

吉他和弦识别算法?

guitar pro5.0如何写和弦(扫弦)

《岁月神偷》弹唱和弦吉他谱_六线谱

VSCode自定义代码片段——CSS选择器

VSCode自定义代码片段6——CSS选择器

Guitar Pro小课堂之弹唱和弦转换小技巧