首页 > 解决方案 > 将带有内联注释的歌词格式化为顶部带有和弦的可读歌曲

问题描述

我正在为可能是一个非常简单的正则表达式公式而苦苦挣扎。

我有一个歌曲信息字符串,歌词和音符交织在一起,就像这样。

test = "[Am]I would keep mys[F]elf [G]I would find a way"

我想要做的是将字符串分成两行,保持和弦的位置,所以它们在原始字符串中的相同位置匹配。

所以上面例子的预期结果是:

"Am              F   G                 "
"I would keep myself I would find a way"

我能够找到以下解决方案来删除所有音符,只给我歌词输出:

test.replace(/\[(.*?)\]/g, "")

但我对正则表达式知之甚少,并且未能找到与我正在尝试的内容相似的任何内容,这将返回唯一的注释。

我想使用上面用于注释的相同方法,我只需要正则表达式公式的帮助。

先感谢您!

标签: javascriptjqueryregex

解决方案


我找到了很好的格式化方式,点击“full page”查看完整片段:

var string = `[Am]I would keep mys[F]elf  [G]I would find a way
[G]I would keep mys[F]elf  [Am]I would find a way`;

string = string.replace(/.+/g, "<div>$&</div>")
var song = string.replace(/\[(?<chord>\w+)\]/g, "<span>$<chord></span>");

document.body.innerHTML = song;

console.log(song);
div {
  line-height: 3em;
  position: relative;
}

span {
  position: absolute;
  line-height: 1em;
  top: 0;
}

匹配行并用/.+/gdiv 替换它们。匹配和弦并用/\[(?<chord>\w+)\]/g跨度替换它们


推荐阅读