我正在VB.NET 2005中做一个项目,我必须提取mp3文件的标签信息。为此,我使用了page中的代码。但问题是当其中一个标记为空时,它没有返回任何值。
例如,使用此功能,我可以检索此类相册信息,
Dim album As String = ""
album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album)
但是我不知道怎么检查相册变量是否为空,我检查了专辑变量
If (album = "") Then
MsgBox("true")
ElseIf (album Is Nothing) Then
MsgBox("true")
ElseIf (album Is DBNull.Value) Then
MsgBox("true")
End If
但没有成功,有人可以帮助我。
答案 0 :(得分:3)
ID3v1标记存储在文件的最后128个字节中。前三个字节是“TAG”,告诉该文件存储标签。因此,首先检查文件是否有标签,然后阅读它们。
我不知道VB,但我想在阅读框架之前,你应该首先:
Dim objMP3V1 As New MP3ID3v1("file_path")
objMP3V1.TagExists
标志是否为真修改强>
链接中的代码
FileGet(intFile, strTag, lngLOF - 127, True)
If (strTag.ToUpper <> "TAG") Then
' No ID3v1 tag found
mblnTagExists = False
mobjFrame(0) = ""
mobjFrame(1) = ""
mobjFrame(2) = ""
mobjFrame(3) = ""
mobjFrame(4) = ""
mobjFrame(5) = ""
mobjFrame(6) = ""
Else
' ID3v1 tag found
mblnTagExists = True
' Read all frames from the file
FileGet(intFile, strTitle)
FileGet(intFile, strArtist)
FileGet(intFile, strAlbum)
FileGet(intFile, strYear)
FileGet(intFile, strComment)
FileGet(intFile, bytDummy)
FileGet(intFile, bytTrack)
FileGet(intFile, bytGenre)
' Assign the frame content to the properties
mobjFrame(0) = strTitle
mobjFrame(1) = strArtist
mobjFrame(2) = strAlbum
mobjFrame(3) = strYear
mobjFrame(4) = bytTrack
mobjFrame(5) = strComment
mobjFrame(6) = bytGenre
End If
End If
因此,如果标签不存在,则应将""
指定为字符串。
ID3v1字段具有固定长度,因此如果album
字段中没有字符串,则它应包含num字符串,即字段的第一个位置将包含空字符{{1}因此,它将返回一个空字符串'\0'
。
我会告诉你在带有ID3v1标签的样本音乐文件上查看这个。 (您甚至可以创建使用ID3v1格式化的文本文件并对其进行测试。)
答案 1 :(得分:0)
我使用正则表达式来解决这个问题。谢谢你的帮助......
Imports System.Text.RegularExpressions
dim RegEx As New RegularExpressions.Regex("^[a-zA-Z0-9]+$")
dim Match As Match
dim film as string
film = song.Frame(MP3ID3v1.FrameTypes.Album)
Match = RegEx.Match(film)
film1 = IIf((Match.Success), film.ToString, "")
如果您正在寻找更专业的标签editior,请a link!