Vb.net TagLib“使用”/&引用;作为表演者标签中的分隔符?

Vb.net TagLib“使用”/&引用;作为表演者标签中的分隔符?,vb.net,tags,separator,taglib-sharp,Vb.net,Tags,Separator,Taglib Sharp,我正在使用的代码 For Each file As String In My.Computer.FileSystem.GetFiles(directory) Dim fi As FileInfo = New FileInfo(file) If isNotMusic(fi.Extension.ToString) = True Then Continue For 'Checks file extension for non-music files; if test is true f

我正在使用的代码

For Each file As String In My.Computer.FileSystem.GetFiles(directory)
    Dim fi As FileInfo = New FileInfo(file)
    If isNotMusic(fi.Extension.ToString) = True Then Continue For 'Checks file extension for non-music files; if test is true for-loop continues with next file
    trackCounter += 1 'Adds 1 to trackCounter
    Dim song As New musicInfo

    Dim tagFile As TagLib.File = TagLib.File.Create(fi.FullName)
    infoArtist = tagFile.Tag.Performers(0)

    With song
        .track = tagFile.Tag.Track
        .title = tagFile.Tag.Title
        .artist = tagFile.Tag.Performers(0)
        .album = tagFile.Tag.Album
        .extension = fi.Extension.ToString
    End With
    songs.Add(song)
Next
当我在充满AC/DC歌曲的文件夹中使用此代码时,tagFile.Tag.Performers(0)返回“AC”

我在其他地方查找了这个问题,从我所看到的情况来看,只有其他的标签解决方案,如MpTagThat和MP1,已经开发了一个补丁


我知道Performers标记是一个数组,另一半“DC”可能存储在tagFile.tag.Performers(1)中。然而,我最终将在代码中用“;”分隔每个艺术家,如果我保持一切不变,AC/DC将返回为“AC;DC”。

在该代码中,艺术家将永远是“AC”,因为您没有将其余的作品传递给它。任何二重唱都不会有第二位艺术家。因为不会有那么多的艺术家在名字中使用斜杠,你可以专门寻找“AC”并修复它。如果有多个,请创建一个字典,以便在看到第一个片段时转换/合并/扩展名称……在将其添加到集合之前,可以使用
AddArtist
方法在
Tag.Performers()集合上循环。你的班级需要类似于《其他艺术家》
的收藏,但它可以处理二重唱和单独提及的《布鲁斯·斯普林斯汀》@puropoix是的,我想现在就必须这样了。只需在case语句中创建一个查找特定艺术家的函数,并将这些值组合在一起,就足够简单了。不知道如何使用字典,没有去过那里。。。然而,@fluffysebert无法重现您的问题。我一切都好。您是否将
AC/DC
设置为艺术家?如果是,怎么做?或者它已经在那里了(比如,你从ITunes等处购买的?@fluffysebert我建议你打开其中一个文件。此外,标记类型也可能有问题。我用ID3v2.3在Mp3Tag中设置标签,当我读取它时,
AC/DC
作为一个整体读取。