javascript - 将带有内联注释的歌词格式化为顶部带有和弦的可读歌曲
问题描述
我正在为可能是一个非常简单的正则表达式公式而苦苦挣扎。
我有一个歌曲信息字符串,歌词和音符交织在一起,就像这样。
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, "")
但我对正则表达式知之甚少,并且未能找到与我正在尝试的内容相似的任何内容,这将返回唯一的注释。
我想使用上面用于注释的相同方法,我只需要正则表达式公式的帮助。
先感谢您!
解决方案
我找到了很好的格式化方式,点击“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;
}
匹配行并用/.+/g
div 替换它们。匹配和弦并用/\[(?<chord>\w+)\]/g
跨度替换它们
推荐阅读
- amazon-web-services - 无法使用 QuotaGuard 静态 IP 连接 SFTP(AWS EC2)
- c# - System.IO.IOException:在 C# 中的路径上共享冲突
- mesh - 如何封闭有孔的表面?
- vim - 维姆
10j 的键绑定将光标向右移动 - amazon-web-services - AWS Glue 列级访问控制
- azure-log-analytics - 查询输出并获取最新文件名
- angular - 为 firebase 添加插件时出错:无法通过注册表获取插件 https://github.com/jestcastro/cordova-plugin-firebase.git
- puppeteer - Puppeteer 输入值以输入表单
- pdf - 如何创建带有倾斜文本的倾斜 SVG 图像
- bash - BigQuery“合并:找不到命令”命令不起作用