2011-11-03 95 views
0

在JavaScript中,如何将包含HTML实体的字符串转换为大写。以字符串 '咖啡馆&栏',例如:将包含HTML实体的字符串转换为大写

Cafés & Bars

它需要被转换为:

CAFÉS & BARS

如果toUpperCase()使用,它会破坏双方的实体。如果案文大写,然后&;之间的文本被小写,那么急性E将保持小写。

在我的特殊情况下,我无法使用text-transform: uppercase风格解决此问题。

+1

解码实体:HTTP ://stackoverflow.com/questions/1147359/jquery-decode-html-entities –

回答

1
function decodeEntities(string){ 
var elem = document.createElement('div'); 
elem.innerHTML = string; 
return elem.textContent; 
} 

后来干脆像decodeEntities('Cafés & Bars').toUpperCase(); 但需要注意的是,当你这样做,你的返回的文本不会CAFÉS & BARS这将是CAFÉ S & BARS

+0

你的方式比我的版本好得多 – david

+0

@david谢谢。您可以使用textContent或innerText来提供浏览器不兼容性,这取决于可用的内容。请注意,您实际上不需要追加元素或给它一个id。只需创建它,给它的innerHTML解码并从创建的元素的引用中获取它的值。 –

0

我希望在这个小提琴中有足够的例子来为你解决问题。仅供参考,你没有提到你是否使用jQuery,如果你只需要香草JS,我可以更新它。

http://jsfiddle.net/hafichuk/APNWh/