0

我正在尝试使用 HTML 字符在字符串中添加所有分号 ,这是一个不间断的细空间。

为此,我写了这一行:

str = str.replace( /;/g, " ;" );

不幸的是,细空格字符是直接写入的,而不是它的 HTML 表示。

是否有允许我将此字符作为 HTML 插入的标志、设置甚至其他功能?

谢谢你。

编辑:之前可能应该提到这一点:我正在开发一个基本的伪代码到 HTML 转换器,其中原始字符串中的某些字符被它们的标准 HTML 等价物替换。

然后将生成的字符串输出到 div 元素,我可以在其中检查它以确保它看起来不错。然后,我检索此新文本的来源以放置到其他网页中。

但是当我查看薄空间的来源时,它只是角色本身,而不是实体名称。

(我会粘贴转换的完整源代码,但它超过 300 行。)

编辑 2:我的印象是 Firefox 中的 Ctrl+U 会显示新添加的字符。我的错; 它们仅在使用 Firebug(或其 Webkit 等效项)查看源代码或选择文本、右键单击并查看源代码以供选择时出现(该选项似乎仅在 FF 中可用)。

为了测试后一种方法,我创建了两个 div 元素并使用了以下 JavaScript 代码:

document.getElementById( "div1" ).innerHTML = ( "'&'" );
document.getElementById( "div2" ).innerHTML = ( "' '" );

& 符号显示为&,但未使用精简空间的实体名称。这可能只是这个特定 FF 功能的奇怪行为。

4

3 回答 3

1

如果您确实想要字符 ,则必须对&符号进行编码。

str = str.replace( /;/g, " ;" );
于 2013-07-09T19:41:43.577 回答
0

为什么你的替换中有第二个分号?不应该只是:

str = str.replace( /;/g, " " );

在我的客户端上,“str”包含 HTML 实体,但一旦将其附加到 DOM,实体就会更改为本机字符。我想这取决于您使用它的目的。如果您使用“str”作为元素的内部文本,那么您将看到实体而不是空间。例如

(function(s) { var x=document.createElement('div'); x.innerText=s; document.body.appendChild(x); })(str);
于 2013-07-09T19:25:54.830 回答
0

“ ” 是一个 html 实体,因此 javascript 无法理解。我建议使用 String.fromCharCode() 方法。一个例子如下......

var str = 'test;here';

str = str.replace( /;/g, String.fromCharCode(8239) );

alert(str);

您可以在此处了解有关 fromCharCode 方法的更多信息。

于 2013-07-09T19:27:48.217 回答