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. Nim教程【十一】

    引用类型和指针类型 不同的引用可以只想和修改相同的内存单元 在nim中有两种引用方式,一种是追踪引用,另一种是非追踪引用 非追踪引用也就是指针,指向手动在内存中分配的对象: 追踪引用指向一个垃圾收集的 ...

  2. Java提高篇(三三)-----Map总结

    在前面LZ详细介绍了HashMap.HashTable.TreeMap的实现方法,从数据结构.实现原理.源码分析三个方面进行阐述,对这个三个类应该有了比较清晰的了解,下面LZ就Map做一个简单的总结. ...

  3. Linux sort命令

    200 ? "200px" : this.width)!important;} --> 介绍 sort命令是一个文本排序命令,它能对标准输入和文本文件进行排序,并且能将结果通 ...

  4. [专业名词·硬件] 1、等效串联电阻ESR概述及稳压电路中带有一定量ESR电容的好处

        一.等效串联电阻ESR概述 ESR是Equivalent Series Resistance的缩写,即“等效串联电阻”.理想的电容自身不会有任何能量损失,但实际上,因为制造电容的材料有电阻,电 ...

  5. [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)

    开机初始化Log Log编号 函数名   所在文件名 000001: main ..\main.c 000002: timers_init ..\main.c 000003: gpiote_init ...

  6. js限制input标签中只能输入中文

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  7. 实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  8. Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密

    前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项.目前企业号和公众号的加密方式是一致的(格式会有少许差别). 加密设置 进入公众号后台的“开发者中心”,我们可以看到U ...

  9. 2015 年最受 Linux 爱好者欢迎的软硬件大盘点

    Linux 爱好者都喜欢用哪些硬件,哪些发行版呢?近日 OpenBenchmarking.org 做了一个 2015 年度数据的统计和梳理,Linux Story 特意整理了一下,分享给大家. 转载于 ...

  10. hibernate学习笔记之一 hibernate简介

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架 hibernate可以自动生成SQL语句,自 ...