Как заменить все одиночные символы из строки? - PullRequest
2 голосов
/ 31 января 2012
<title>
<article_title>Land a b   c   d      Band a /article_title></article_title>
</title>

<xsl:value-of select='replace(article_title,"(\s+.\s+)"," ")'/>

Я ожидаю Land Band, но вместо этого я получаю Land B Band. Может кто-нибудь исправить функцию замены?

1 Ответ

1 голос
/ 31 января 2012

Использование :

replace(article_title, '(^[^ ]+)(.+\s+)([^ ]+)$', '$1 $3')

Вот полное преобразование :

 <xsl:template match="/*">
  <xsl:value-of select=
  "replace(article_title, '(^[^ ]+)(.+\s+)([^ ]+)$', '$1 $3')"/>
 </xsl:template>
</xsl:stylesheet>

Когда это преобразование применяется кпредоставленный XML-документ :

<title>
    <article_title>Land a b   c   d      Band</article_title>
</title>

желаемый, правильный результат получается :

Land Band
...