在我的应用程序中,我需要显示一个歌曲列表.现在我这样做:
Song.all.sort {|x,y| x.artist.name <=> y.artist.name }
Run Code Online (Sandbox Code Playgroud)
不幸的是,这意味着"臭名昭着的大"将与T一起排序,而我希望他与N一起排序(即,我想忽略文章 - "the","a"和"an" - 对于排序的目的.
我的第一个想法是这样做:
Song.all.sort {|x,y| x.artist.name.gsub(/^(the|a|an) /i, '') <=> y.artist.name.gsub(/^(the|a|an) /i, '') }
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.思考?
我希望列出一个列表,忽略任何初始明确/不定的文章'the'和'a'.例如:
我想也许在XSLT 2.0中,这可以通过以下方式实现:
<xsl:template match="/">
<xsl:for-each select="play"/>
<xsl:sort select="if (starts-with(title, 'A ')) then substring(title, 2) else
if (starts-with(title, 'The ')) then substring(title, 4) else title"/>
<p><xsl:value-of select="title"/></p>
</xsl:for-each>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
但是,我想使用浏览器内处理,因此必须使用XSLT 1.0.有没有办法在XLST 1.0中实现这一目标?