如何从字符串中删除二进制内容?
How to remove binary content from the strings?
我正在尝试使用 golang 从 mp3 文件中读取 ID3 标签。
我得到了结果。但正如我的 database viewer 建议的那样,它们也包含一些二进制内容。
有什么方法可以删除 golang 中的内容?
这是 id3-go: PR 8 中的一个当前问题,已针对 id3v1
修复
但这对于 id3v2 来说还不够,正如 in this commit 所示,它必须 trim 那些空字符。
请参阅 cutset := string(rune(0))
和 TrimRight(s string, cutset string)
的用法,例如 strings.TrimRight(fd.Title(), cutset)
:
fd, err := id3.Open(path)
if err != nil {
item.Title = f.Name()
} else {
defer fd.Close()
cutset := string(rune(0))
title := strings.TrimRight(fd.Title(), cutset)
author := strings.TrimRight(fd.Artist(), cutset)
if len(title) > 0 {
item.Title = title
} else {
item.Title = author
if len(author) > 0 {
item.Title += " - "
}
item.Title += strings.TrimRight(f.Name(), cutset)
}
item.Subtitle = author
tcon := fd.Frame("TCON")
if tcon != nil {
item.Categories = append(item.Categories, Text{Value: strings.TrimRight(tcon.String(), cutset)})
}
item.PubDate = strings.TrimRight(formatYear(fd.Year()), cutset)
我正在尝试使用 golang 从 mp3 文件中读取 ID3 标签。
我得到了结果。但正如我的 database viewer 建议的那样,它们也包含一些二进制内容。
有什么方法可以删除 golang 中的内容?
这是 id3-go: PR 8 中的一个当前问题,已针对 id3v1
修复但这对于 id3v2 来说还不够,正如 in this commit 所示,它必须 trim 那些空字符。
请参阅 cutset := string(rune(0))
和 TrimRight(s string, cutset string)
的用法,例如 strings.TrimRight(fd.Title(), cutset)
:
fd, err := id3.Open(path)
if err != nil {
item.Title = f.Name()
} else {
defer fd.Close()
cutset := string(rune(0))
title := strings.TrimRight(fd.Title(), cutset)
author := strings.TrimRight(fd.Artist(), cutset)
if len(title) > 0 {
item.Title = title
} else {
item.Title = author
if len(author) > 0 {
item.Title += " - "
}
item.Title += strings.TrimRight(f.Name(), cutset)
}
item.Subtitle = author
tcon := fd.Frame("TCON")
if tcon != nil {
item.Categories = append(item.Categories, Text{Value: strings.TrimRight(tcon.String(), cutset)})
}
item.PubDate = strings.TrimRight(formatYear(fd.Year()), cutset)