JavaScript 字符串中如何表示不间断空格?

IT技术 javascript jquery
2021-01-18 17:24:38

这显然不起作用:

X = $td.text();
if (X == ' ') {
X = '';
}

有没有关于不间断空格或 JavaScript 不喜欢的&符号的东西?

4个回答

 是一个 HTML 实体。这样做时.text(),所有 HTML 实体都被解码为它们的字符值。

不使用实体进行比较,而是使用实际的原始字符进行比较:

var x = td.text();
if (x == '\xa0') { // Non-breakable space is char 0xa0 (160 dec)
  x = '';
}

或者,您也可以从字符代码手动创建字符,以 Javascript 转义形式:

var x = td.text();
if (x == String.fromCharCode(160)) { // Non-breakable space is char 160
  x = '';
}

有关更多信息,String.fromCharCode请访问:

fromCharCode - MDC 文档中心

此处提供有关不同字符集的字符代码的更多信息:

Windows-1252 字符集
UTF-8 字符集

哇。这个答案好复杂,一定是正确的!(我和 JavaScript 就像油和水)。但也许如果我被剧烈摇晃,我们就会混在一起。
2021-03-20 17:24:38
@cobbal:非常正确......实际上这将是更简单的方法。
2021-03-29 17:24:38
普通空格被破坏,所以它是 '\x20',但最好使用 ' '。
2021-03-30 17:24:38

请记住,.text()删除标记,因此我不相信您会 在非标记结果中找到。

在回答中......

var p = $('<p>').html('&nbsp;');
if (p.text() == String.fromCharCode(160) && p.text() == '\xA0')
    alert('Character 160');

显示警报,因为返回的是标记的 ASCII 等价物。

使用 jQuery,我们可以看到$("<div>&nbsp;</div>").text().charCodeAt()给出了160(unicode for nbsp)
2021-04-04 17:24:38

当浏览器呈现页面时,该实体将转换为它所代表的字符。JS (jQuery) 读取渲染的页面,因此不会遇到这样的文本序列。它可能遇到这种事情的唯一方法是如果您是双重编码实体。

jQuery 文档text()

由于不同浏览器中 HTML 解析器的差异,返回的文本在换行符和其他空白处可能会有所不同。

我会用$td.html()

这会将 html 标签添加到您页面的标记中。例如,字符串 '<text>' 将是一个 html 元素。
2021-03-24 17:24:38