4

これは 2 分以内に回答されると思いますが、Google で解決策を見つけることができません。

試した:これこれ

最初にサーバーからデータを受け取るテキストエリアがあります(動的にAJAXを使用)。テキストエリアのテキストは次のようになります。

Hello&nbsp;Cruel&nbsp;<br&nbsp;/>World!

私のユーザーはこの見た目が好きではありません:)

だから私は非常に単純な関数を書きました:

    function replaceHtml( string_to_replace ) 
    {
        var result = replaceAll( string_to_replace, "&nbsp;", " ");
        result = result.replace(/<br\s*\/?>/mg,"\n\r"); // or "\n", "\r", "\r\n"
        return result;
     }

私の出力は次のようになります。

Hello Cruel World!

それ以外の:

Hello Cruel
World!

長さが最大 ​​5 行で、すべてのブラウザと OS に適用できるソリューションが欲しい

ところで、私は正規表現のファンではないので、本当の問題はそこにあるかもしれません..

アップデート

この回答とMichael_B氏から、私はこの解決策を得ましたが、これは私にとってはうまくいきますが、キャラクターが最善の解決策ではないかもしれないという予感があります:

function replaceHtml( string_to_replace ) 
{
    return string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '\u2028');
}
4

3 に答える 3

8

@Explosion Pills コメントと jsFiddle に基づく

デモ

function replaceHtml( string_to_replace ) 
{
        return string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '\n');
}

テキストエリアの改行に基づくUPDATE

更新されたデモ

おそらく、これで問題が解決するでしょう\n-jQueryが必要です。

function replaceHtml(string_to_replace) {
    return $("<div>").append(string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '&#13;&#10;')).text();
}
于 2013-03-05T13:54:53.633 に答える
1

$.replaceAll()間違っている場合は訂正してください。ただし、JS ではなく jQuery 関数であるため、そうすべきではありませんか?

またはreplace()純粋なJavascriptで?

于 2013-03-05T13:50:27.543 に答える
0

そこでjQueryを使用する必要はありませんでした:

function replaceHtml( string_to_replace ) 
{
    var result = string_to_replace.replace(/\&nbsp;/g, ' ').replace(/<br\s*\/?>/mg,"\n\r"); // or "\n", "\r", "\r\n"
    return result;
 }
于 2013-03-05T13:54:41.543 に答える