0

文字列内のすべてのセミコロンの前に、改行し ない薄いスペースである HTML 文字を追加しようとしています。

これを行うために、次の行を書きました。

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

残念ながら、薄いスペース文字は、HTML 表現ではなく、直接書き込まれます。

この文字を HTML として挿入できるようにするフラグ、設定、または別の機能はありますか?

ありがとうございました。

編集:おそらくこれは前に述べたはずです: 私は基本的な疑似コードから HTML へのコンバーターに取り組んでいます。このコンバーターでは、元の文字列の特定の文字が標準の HTML に相当する文字に置き換えられます。

結果の文字列は div 要素に出力され、そこで検査して見栄えが良いことを確認できます。次に、この新しいテキストのソースを取得して、他の Web ページに配置します。

しかし、薄いスペースのソースを見ると、エンティティ名ではなく、キャラクターそのものです。

(変換用の完全なソースを貼り付けますが、300 行を超えています。)

編集 2: Firefox で Ctrl+U を押すと、新しく追加された文字が表示されるという印象を受けました。私の間違い; ソースを Firebug (または同等の Webkit) で表示する場合、またはテキストを選択し、右クリックして選択対象のソースを表示する場合にのみ表示されます (オプションは FF でのみ使用できるようです)。

後者のアプローチをテストするために、2 つの div 要素を作成し、次の JavaScript コードを使用しました。

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

アンパサンドは として表示されます&が、薄いスペースのエンティティ名は使用されません。これは、この特定の FF 機能による奇妙な動作である可能性があります。

4

3 に答える 3

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 に答える
0

代わりに 2 番目のセミコロンがあるのはなぜですか? 次のようにすべきではありません:

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

私のクライアントでは、「str」に HTML エンティティが含まれていますが、それを DOM にアタッチすると、エンティティがネイティブ文字に変更されます。何に使うかにもよると思います。要素の innerText として「str」を使用すると、スペースではなくエンティティが表示されます。例えば

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