【发布时间】:2013-06-20 11:24:40
【问题描述】:
我有一个显示歌曲名称和艺术家的 ListView。有时,歌曲名称包含曲目编号和分隔符,其中一些采用这种格式
13 - J. Cole - Best Friend
还有其他类似的
13 - Beautiful People
经过一番挖掘后,我发现解决此问题的最佳方法是定义一个正则表达式模式,该模式将删除字符串中任何不必要的字符。凉爽的。我已经查看了关于类似主题 here 的其他 SO 问题以及一些博客文章,但仍然没有运气。
这是我第一次处理正则表达式,我发现它非常有用,只是想把我的脑袋想出高效/有用的模式。
如果匹配,这是我需要从字符串中删除的内容
The track number
The "-" or whatever separator character that follows it
The artist name and the "-" that follows that(Each artist name is listed below the song, so it would be redundant)
像往常一样,任何帮助都将不胜感激,谢谢!
编辑:我想要的相同输出是这样的,只有歌曲名称。没有轨道编号,如果适用; “-”后没有艺术家姓名
Beautiful People
Angel of Mine
Human Nature
【问题讨论】:
-
计算机是确定性的。它们不能使用诸如“其后的任何分隔符”之类的定义。除此之外,您可以使用
\d+\s*-\s*([^-]+){1,2}或类似的东西。如果破折号不是唯一可能的分隔符,请定义它。 -
样本输出是什么???你只想删除轨道号?或者字符串之间的 -
-
@StinePike 我已经编辑了我的问题。基本上删除它后面的轨道号和连字符。在某些情况下,艺术家姓名也被列为歌曲标题的一部分。如果我也可以删除它会很好
-
@akonsu 好点。分隔符通常是“-”,但我见过轨道号后跟“。”的情况。时期。谢谢