LRC是英文lyric(歌词)的缩写,被用做歌词文件的扩展名.以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示.LRC 歌词是一种包含着“*:*”形式的“标签(tag)”的基于纯文本的歌词专用格式.

格式解析

1.标识标签(ID-tags)

[ar:艺人名]
[ti:曲名]
[al:专辑名]
[by:编者(指编辑LRC歌词的人)]
[offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反.这是用于总体调整显示快慢的.

[ti:山丘]
[ar:李宗盛]
[offset:0]


2.时间标签(Time-tag)

[mm:ss:fff]具体歌词内容

[00:19.59] 想说却还没说的 还很多
[00:28.97] 攒着是因为想写成歌
[00:33.91] 让人轻轻地唱着 淡淡地记着

代码实现

Public Class LyricClass
    Structure LyricStructre '歌词结构类型
        Dim Count As Integer
        Dim LyricTime As List(Of Integer) '每行歌词的时间序列
        Dim LyricString As List(Of String) '每行歌词的字符串序列
    End Structure
    Structure InformationStructre '歌词信息结构类型
        Dim Author As String '作者名[ar]
        Dim Title As String '歌曲名[ti]
        Dim Album As String '专辑名[al]
        Dim Editor As String '编者[by]
        Dim Offset As Integer '时间补偿值[offset]
    End Structure
    Public LyricData As New LyricStructre With {.LyricTime = New List(Of Integer), .LyricString = New List(Of String)}
    Public LyricInf As New InformationStructre
    Public isLoadFail As Boolean = False '是否加载失败
    Public Sub New(ByVal FileName As String)
        LoadLyrics(FileName)
    End Sub
    Public Sub LoadLyrics(ByVal FileName As String)
        Dim str As String
        LyricData.Count =
        LyricData.LyricTime.Clear()
        LyricData.LyricString.Clear()
        If My.Computer.FileSystem.FileExists(FileName) = True Then
            str = My.Computer.FileSystem.ReadAllText(FileName, System.Text.Encoding.Default)
            Dim tempString As String
            For Each SubString As String In Split(str, vbCrLf)
                tempString = , )
                If IsNumeric(tempString) = True Then
                    LyricData.count +=
                    LyricData.LyricTime.Add(, ) *  *  + , ) *  + , ))
                    LyricData.LyricString.Add())
                ElseIf tempString = "ar" Then
                    LyricInf.Author = ), )
                ElseIf tempString = "ti" Then
                    LyricInf.Title = ), )
                ElseIf tempString = "al" Then
                    LyricInf.Album = ), )
                ElseIf tempString = "by" Then
                    LyricInf.Editor = ), )
                ElseIf tempString = "of" Then
                    LyricInf.Offset = ), )
                End If
            Next
        Else
            isLoadFail = True '加载失败
        End If
    End Sub
End Class

歌词文件解析(一):LRC格式文件的解析的更多相关文章

  1. 歌词文件解析(二):LRC格式文件的绘制

    通过对LRC文件的解析,可以轻松实现歌词可视化. 代码实现 函数名: paintLyrics(ByVal pBox As PictureBox, ByVal CurrentPosition As In ...

  2. 【转】java将excel文件转换成txt格式文件

    在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...

  3. 批量将某一目录下的.py文件改为.txt格式文件

    #!/usr/env/python#-*- coding:utf-8 -*-#批量将某一目录下的.py文件改为.txt格式文件import os,os.pathfile_list = os.listd ...

  4. 使用visual studio把xsd文件转成xml格式文件

    使用visual studio把xsd文件转成xml格式文件 最近一段时间都在做Amazon的mws api的对接工作,mws api的描述文件都是使用的xsd文件来进行的,之前确实也没有接触过,也花 ...

  5. 在linux下,去除^M,将windows格式文件(dos文件)改为unix格式文件

    在Windows系统下编辑的文件,换行符回车的格式为'\r\n',在linux系统下,回车的格式为'\n',在Windows下编辑的文本文件在上传至linux服务器时,回车'\r\n'就显示成^M+' ...

  6. .net amr格式文件转换成mp3格式文件的方法

    前言:winform端对于音频文件的格式多有限制,大多数不支持amr格式的文件的播放.但是,手机端传过来的音频文件大多数是amr格式的文件,所以,要想在winform客户端支持音频文件的播放,可以通过 ...

  7. Excel文件相关:XLS格式文件基本操作

    序 1.添加引用 添加引用->Com->Microsoft Excel 9.0 Object Library(对应Excel2000) *Microsoft Excel 11.0 Obje ...

  8. C#:将.csv格式文件转换成.xlsx格式文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. 将腾讯视频客户端缓冲的文件转换为一个MP4格式文件

    打开腾讯视频windows客户端,播放要下载的视频,逐步快进使其缓冲完毕: 按照下图所示,复制缓存路径: 在cmd.exe的界面中输入“cd C:\854456b6d5a187ff3c0f553918 ...

随机推荐

  1. python post

    使用python 提交表单包括图片以及参数信息,详见代码 # -*- coding: utf-8 -*- import MultipartPostHandler, urllib2, cookielib ...

  2. UWP开发笔记——嵌套式页面的实现

    绪论 UWP开发中,Page是最常用的Control之一,通常情况下,在开发的application中,每一个页面就是一个Page.有时候,为了开发整合度更高,UI表现更为一致的UI,开发者需要把UI ...

  3. RabbitMQ(五) -- topics

    RabbitMQ(五) -- topics `rabbitmq`中的`topic exchange`将路由键和某模式进行匹配,从而类似于正则匹配的方式去接收喜欢的信息. topic exchange ...

  4. 网络异步编程(C#)团购课

    新生命开发团队大石头讲解网络异步编程(C#) 内容:网络编程基础.IOCP.APM.SAEA 时长:2~3小时 价格:20元,20人及以上成团,http://item.taobao.com/item. ...

  5. Git学习笔记(4)——添加远程仓库,克隆远程库,以及库的推送

    本文记录了远程库的连接和库的克隆和推送. 远程仓库简介 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且 ...

  6. 我的第一个Linux C 程序

    说明:上篇博客把gcc安装了,接着我们就尝试一下她的厉害吧. 我用的是vi的超级版本vim.这条指令,也就是用vim打开这个文件,如果文件不存在的话,那么创建这个文件. 关于Linux文件的创建,也可 ...

  7. java Decompiler的bug

    java Decompiler 有一个明显的bug是, 之前的打开jar文件,会被缓存起来,如果再次打开同名jar文件(jar内容替换~!),会导致仍然显示原来内容! . 必须关闭Decompiler ...

  8. CSS水平垂直居中的几种方法2

    直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; b ...

  9. Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

    Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 1.1. 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. ...

  10. EXCEL的导出

    具体实现代码: protected void EXCEL_Click(object sender, EventArgs e) { ToExcel(GridView1); } public void T ...