JavaScript:在 XMLSerializer 错误地解析实体后,用 html 160 实体替换三个空格
JavaScript: replace three spaces with html 160 entity after XMLSerializer incorrectly parses entities
我正在尝试做这样的事情...
f = f.replace(' ','   ','gi');
我也试过这个...
f = f.replace(/' {3,}/g,'   ','gi');
如何用上面的实体替换三个空格?
使用's
不起作用,我已经在Stack上进行了许多其他问答,但没有任何效果。
为了澄清起见,这个问题源于除了序列化之外的XMLSerializer()
解析,空格位于每个句子的开头。我使用它使代码在编辑时可读。
XHTML 编辑器中的示例占位符文本(只是一个文本区域(...
<p>1
  2
  3
  4
  5</p>
。目标是序列化此代码并保留实体(序列化不应解析,但所有浏览器都解析(,或通过替换后遗症来"反解析"。
此外,变量 f 是一个字符串,而不是示例中的对象或片段。
重要!
使用 encodeURI 后,发现这些不是由 XMLSerializer()
生成的空格,(添加空格以使其更具可读性(%0A
%20
%C2
%A0
%C2
%A0
。
以下是使用encodeURI确定字符之前和之后的文本外观的几个示例,因为它们不匹配空格,从而使试图提供帮助的人望而却步......
%0A%20  First%20and
  First and
第一个插入了两个实体,不可取,我只需要一个。
  Which is actually
%0A%20 %20Which%20is%20actually
第二个输出使用@Bergi中的以下内容效果很好...
f = f.replace(/'u00a0/g, ' ')
以下是不成功的尝试,最后一个是成功的尝试......
//f = f.replace(/^'s+|'s+$/g,'');
//f = f.replace(' ','   ','gi');
//f = f.replace( / {3,}/g, ' ' );
//f = f.replace(/ {3,}/g,' 'u00a0 ');
//f = f.replace(/' {3,}/g,'   ');
f = f.replace(/ 'u00a0/g, '  ');
var f = "Hello World";
f = f.replace( / {3,}/g, ' ' );
console.log(f);
// "Hello World"
听起来您的问题与字符串替换无关,而是您如何使用它来修改 HTML。你为此做了什么?
编辑:如果您希望用户在浏览器中实际看到 
,则需要:
f = f.replace( /'s+{3,}/g, '&#160;' );
演示:http://jsfiddle.net/wrMMy/
不要用 entitiy 替换,而是替换为实际字符:
f = f.replace(/ {3,}/g,' 'u00a0 ');
当然,这取决于该字符串的输出,但通常您应该按原样使用字符串。
顺便说一句:为了使html/xml空格可读,我建议使用css属性white-space:pre-wrap
而不是插入不间断字符。他们尤其使复制文本变得恐怖。此外,如果您希望显示与源中一样多的空格,则应将/'s{2}/
替换为 " 'u00a0"
。
好的,你有一个非常奇怪的输入:换行符(10
,%0A
,"'n"
(,一个普通空格(32
,%20
," "
(和两个不间断空格(160
,%C2%A0
,"'u00a0"
(。您现在可以做什么来获得所需的输出:
- 将第一个 NBSP
- 替换为其实体,将第二个 NBSP 替换为空白:
replace(/'u00a0{2}/g, "  ")
- 仅替换两个相邻 NBSP:
replace(/'u00a0(.)/g, " $1")
中的第一个 - 将三个空格替换为两个空格和一个介于:
replace(/'s{3}/g, "   ")
之间的实体
f = f.replace(/' {3,}/g,'   ');
这行得通。 replace
只需要两个论点。
演示:http://jsfiddle.net/SjydF/
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 使用javascript将html实体替换为文本
- JavaScript:在 XMLSerializer 错误地解析实体后,用 html 160 实体替换三个空格
- 替换字符串中的 HTML 实体,避免使用
标记
- 将 jquery 文本替换为 TM 字符实体,并用 jquery 替换
- 如何将选择列表添加到自定义实体的案例表单中(注意:替换普通查找字段)
- 用javascript字符串中的html实体替换(LaTeX)命令
- JavaScript将一个html实体替换为另一个
- 检测一个特定的html实体字符并用另一个替换它
- 使用javascript regex替换字符实体
- Regex自动化用于将javascript十六进制字符串替换为HTML实体字符串
- 在我的标记引号替换为html实体