我正在尝试做这样的事情......
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, '  ');