3

javascriptまたはjQueryを使用して、WebページのTD要素内のテキスト内のシーケンスASCII 13 ASCII 10-(CRLFDASHまたは/r/ n-)を置き換えるにはどうすればよいですか?スタックオーバーフローや他の場所でもこれについて同様の質問がありますが、リストされているソリューションはこの特定のシナリオでは機能しません。着信HTMLは、変更されない顧客のレガシーソフトウェアによって動的に生成されますが、変更可能なjavascriptファイルを参照します。このページの短縮版を以下に示します。実際のページには、0〜20行のデータが含まれ、その一部には複数の行が含まれています。私のユーザーはInternetExplorer8を使用していて、以下の2行のどちらも機能していません。キャリッジリターンを交換し、ラインフィードを交換してみました。私はこれをjavascriptとjQueryから試しましたが、目に見える効果はありません。Internet Explorer 8からページを保存し、16進エディターで表示すると、改行文字と改行文字がクライアントに表示されます。問題の核心は、テキスト内の/nをJavaScriptに公開することです。

シーケンス/r/ n-が要素のページに存在するときはいつでも、表示された出力に2行のテキストを表示したいので、この置換を実行したいと思います。

置換の2つのバージョン、1つはjQuery、もう1つはJavaScriptが含まれていることに注意してください。私がやりたいこともしません。

   <html>
    <head>
    <title>Page Testing </title>
    <script src="js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('td').each(function () {
                $this = $(this);
                $this.html($this.html().replace(/\r\n\-/g, "<br/>-"));
                this.innerHTML = (this.innerHTML.replace(/\r\n\-/g, "<br/>-"));
            });
        });
    </script>
    </head>
    <body>
    <table>
    <tbody>
    <tr>
     <td>-First Content
    -Second Line of Content</td>
    <td>-How I want it to look<br/>-After the transformation</td>
    </tr>
    </tbody>
    </table>
    </body>
    </html>
4

4 に答える 4

11

あなたの質問は、それらを別々の行に表示することだけを気にし、特に\ r\nを置き換えることは気にしないと言っています。

この問題を解決するためにcssを検討することができます。

<style>
    tr {
        white-space:pre-line;
    }
</style>

さまざまな空白の値がどのように機能するかを確認してください。

于 2012-05-09T23:28:38.993 に答える
1

これは特定のケースで機能します。

$this.html($this.html().replace(/\s+\-/g, "<br /> -"));

CRLF文字を探す代わりに、空白の後にダッシュが続きます。コンテンツにスペースの後にダッシュがある場合は、brタグも追加されます。

改行のIE8には奇妙な動作があります。説明があれば更新します。

于 2012-05-09T18:56:09.213 に答える
0

あなたは試すことができます

$this.html().replace(/[\n\r]+\-/g, "<br/>-")

これは、改行文字とキャリッジリターン文字の両方を置き換えます。

于 2012-05-09T15:48:37.677 に答える
0

\ n-を置き換えるだけですが、置き換えようとしている文字シーケンスは\ r\n-であると述べました

\rを置換式に入れてみてください。

\ r文字は、通常はサポートされているWindows / Linuxの改行ではありませんが、すべての人に対応しようとするブラウザ/ソースビューアでは改行として表示されることがよくあります。

于 2012-05-09T15:52:58.953 に答える