我有一个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

最佳答案

这是您可以使用的可能的正则表达式:

name.replaceFirst("^\\d+\\.?\\s*-(?:.*?-)?\\s*", "")

这将取出:

前面的
  • 数字
  • (可选)后跟一个点
  • (可选)空格
  • 连字符
  • 如果找到另一个连字符,则直到该
  • 为止的所有内容
  • (可选)空格
  • 07-24 18:21