作者s25g5d4 (死城盗贼)
看板RegExp
标题[问题] 动态歌词
时间Sat Feb 18 10:54:57 2012
使用语言:javascript
[00:57.29][00:57.27]senbonsakura yoru ni magire
我想把上面这串切成[00:57.29],[00:57.27],senbonsakura yoru ni magire
可是我用/^(\[[0-9:.]*\])*([^\[\]].*)$/
只能抓到[00:57.27],senbonsakura yoru ni magire
用()包起来不能match多次吗?
因为前面的[]可能会不只两个
不然的话就是抓\[.*\]然後再用split切了...
--
作者 adameva (阳光,夏天,七星潭) 看板 ask
标题 [问字] 请问有形容东西变大的单字吗?
时间 Wed Jul 6 00:13:04 2011
※ 发信站: 批踢踢实业坊(ptt.cc)
1F:推 ahw12000:踢打07/06 00:13
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.123.96.70
2F:推 No:如果只是时间的部分长度不定 /(\[[\d:.]*\])|[^\[\]]*$/g 02/18 15:34
3F:推 qwertmn:split(/(?=\[|senbon)/) 完整分割字串还是split比较方便 02/18 19:44
4F:→ qwertmn:.match(/\[[^\]\[]+\]|[^\]\[]+$/g) match 我会这样用0.0 02/18 21:41
谢谢楼上几位朋友的回应!
时间部分是固定的 一定是[mm:ss.aaa] a=毫秒
但是时间标签确可能不只一个 例如下面的范例
[00:46.55]不是每一次的演唱
[00:50.15]就可以淡忘明天没有你
[00:54.01]In my heart we'll never be apart
[01:00.57][02:06.27]残留手上的香味提醒我
[01:04.58][02:09.64]在数位相机里 留下的承诺
[01:08.50][02:13.40]每一封简讯 传出的思念 都对你说
[01:15.55][02:20.22][02:52.79]?? means I love you
另外就是因为我是要把整个lrc档案都读完存进阵列里
所以後面歌词部分是不定的 不是说抓senbon就OK
当然其实这个用split硬切就没问题了 格式都蛮固定的
但还是想用regexp试试看
※ 编辑: s25g5d4 来自: 122.123.96.70 (02/18 22:40)
我在说清楚一点好了 因为我想用网页制作一个播放器
同时也可以显示歌词 而且这个歌词可以采用通用的动态歌词 (*.lrc档)
所以我需要一个parser将动态歌词转换为阵列以供读取
理想是产生
[
{
"time":
[
{
"min":mm,
"sec":ss,
"ms" :aa
}
]
"lyric":"lyrics"
},
{
"time":
[
{
"min":mm,
"sec":ss,
"ms" :aa
},
{
"min":mm,
"sec":ss,
"ms" :aa
}
]
"lyric":"lyrics"
},
.
.
.
]
当然 实际阵列绝对不可能这麽复杂 效能会减损
这个举例只是比较好理解而已
※ 编辑: s25g5d4 来自: 122.123.96.70 (02/18 23:49)
※ 编辑: s25g5d4 来自: 122.123.96.70 (02/18 23:49)