私はこのようなことをしようとしています...
f = f.replace(' ','   ','gi');
私もこれを試しました...
f = f.replace(/\ {3,}/g,'   ','gi');
3 つのスペースを上記のエンティティに置き換えるにはどうすればよいですか?
使用\s
しても機能しません。スタックに関する他の多くの Q&A を試しましたが、何も機能しませんでした。
明確にするために、この問題はシリアル化に加えて解析に起因し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
最初のものには 2 つのエンティティが挿入されていますが、望ましくありません。必要なのは 1 つだけです。
  Which is actually
%0A%20 %20Which%20is%20actually
2 番目の出力は、@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, '  ');