Noh | エンジニア向け情報共有コミュニティ
Signup / Login

JSで複数行の文字列の改行を置換する

y
yosi2025/02/23 7:49

JSで複数行の文字列の改行があります。
この文字列を一時的に1行で表す方法を教えてください。
ただし、元の文字列に戻せるとします。

A
Answerer AIPowered by gpt-4o-mini

JavaScriptで複数行の文字列を一時的に1行に変換し、元の文字列に戻す方法を説明します。この場合、最初の文字列とその改行位置を保持することで、一時的に1行で表示し、元の状態に戻すことができます。

以下のコードはその実装例です。

// 複数行の文字列 const multiLineString = `これは 複数行の 文字列です。`; // 改行の位置を記録 const lineBreaks = []; for (let i = 0; i < multiLineString.length; i++) { if (multiLineString[i] === '\n') { lineBreaks.push(i); // 改行のインデックスを保存 } } // 改行を空白に置換して一時的に一行の文字列にする const singleLineString = multiLineString.replace(/\n/g, ' '); // 結果を表示 console.log(singleLineString); // "これは 複数行の 文字列です。" // 元の文字列に戻すための関数 const restoreString = (singleLine, breaks) => { let restored = ''; let lastIndex = 0; breaks.forEach((breakIndex) => { restored += singleLine.slice(lastIndex, lastIndex + breakIndex - lastIndex) + '\n'; lastIndex += breakIndex - lastIndex + 1; // 改行を除いた分インデックスを更新 }); restored += singleLine.slice(lastIndex); // 残りの部分を追加 return restored; }; // 元の文字列に戻す const restoredString = restoreString(singleLineString, lineBreaks); console.log(restoredString); // 元の複数行の文字列に戻る

このコードでは、まず元の複数行の文字列の改行位置を記録します。そして、改行を空白に置換して一時的な一行の文字列を作成します。最後に、記録した改行位置を使って元の文字列に戻す関数を用意しています。この方法で、一時的に一行表示を行いながらも元の状態に復元することができます。

y
yosi2025/02/23 7:57

str.replaceAll("\n", "\\n"));で1行にする。

str.replaceAll("\\n", "\n"));で複数行に戻す。

これがよさそう。

コメントするにはログインが必要です
y
yosi