改行を削除するとは
業務システムやWebアプリケーションでは、ユーザー入力やCSVデータ、テキストファイル、メール本文などを扱う機会が非常に多くあります。 その中でよく発生するのが、不要な改行が含まれた文字列の処理です。
例えば問い合わせフォームの内容をデータベースへ保存する場合や、CSVデータを読み込んで検索を行う場合、改行が混ざっていることで検索精度が低下したり、画面レイアウトが崩れたりすることがあります。
そのため実務では「改行を削除する」という文字列加工処理が頻繁に行われます。
例えば次のような文字列があるとします。
JavaScript
Utility
Guide
これを次のように1行へまとめたい場合があります。
JavaScriptUtilityGuide
あるいは単語の区切りを残したまま整形したい場合もあります。
JavaScript Utility Guide
実務では用途によって処理方法を使い分けることが重要です。
まずは改行コードを理解しよう
改行を削除する前に、まずは改行コードについて理解しておきましょう。
実は改行には複数の種類があります。
| 改行コード | 意味 | 主な環境 |
|---|---|---|
| \n | LF | Linux、macOS |
| \r\n | CRLF | Windows |
| \r | CR | 旧Mac |
そのため実務では「\nだけ消せば十分」と考えるのは危険です。 WindowsとLinuxの両方に対応できるように実装する必要があります。
最も基本的な改行削除
JavaScriptではreplace()を使用して改行を削除できます。
// 改行を含む文字列
const text = "JavaScript\nUtility\nGuide";
// 改行を削除
const result = text.replace(/\n/g, "");
console.log(result);
JavaScript実行結果
JavaScriptUtilityGuide
ただしこの方法は「\n」にしか対応していません。 Windows環境などでは不十分なことがあります。
実務で推奨される方法
実務ではすべての改行コードに対応する実装が推奨されます。
// Windows・Linux・macOSに対応
const text = "JavaScript\r\nUtility\nGuide\rSample";
const result = text.replace(/\r?\n|\r/g, "");
console.log(result);
JavaScript実行結果
JavaScriptUtilityGuideSample
正規表現の意味を理解しよう
/\r?\n|\r/g
JavaScriptこの正規表現を分解すると以下の意味になります。
- \r?\n → Windows形式(CRLF)およびLinux形式(LF)
- | → または
- \r → CR単独改行
- g → 文字列全体を対象
つまり、ほぼすべての改行形式に対応できます。
改行を空文字ではなくスペースへ置換する
改行をそのまま削除すると、単語同士がくっついて読みにくくなる場合があります。
例えば次のようなケースです。
JavaScript
Utility
Guide
単純削除すると次のようになります。
JavaScriptUtilityGuide
そこで改行を半角スペースへ置換します。
// 改行を空白へ変換
const text = "JavaScript\nUtility\nGuide";
const result = text.replace(/\r?\n|\r/g, " ");
console.log(result);
JavaScript実行結果
JavaScript Utility Guide
実務ではこちらの方が利用頻度が高い場合もあります。
改行と連続空白をまとめて整形する
実際のデータには改行だけでなく、余分な空白も混在していることがあります。
// サンプルデータ
const text = `
JavaScript
Utility
Guide
`;
// 改行を空白へ変換し、連続空白を1つへ統一
const result = text
.replace(/\r?\n|\r/g, " ")
.replace(/\s+/g, " ")
.trim();
console.log(result);
JavaScript実行結果
JavaScript Utility Guide
この方法は業務システムで非常によく利用されます。
業務で使えるテンプレート関数
改行を完全削除する関数
/**
* 改行を削除する
*
* @param {string} text 対象文字列
* @returns {string} 改行削除後文字列
*/
function removeLineBreaks(text) {
// null対策
if (text == null) {
return "";
}
return String(text)
.replace(/\r?\n|\r/g, "");
}
// 使用例
console.log(
removeLineBreaks(
"JavaScript\nUtility\nGuide"
)
);
JavaScript改行をスペースへ変換する関数
/**
* 改行をスペースへ変換する
*
* @param {string} text 対象文字列
* @returns {string} 整形済み文字列
*/
function replaceLineBreaksWithSpace(text) {
// null対策
if (text == null) {
return "";
}
return String(text)
.replace(/\r?\n|\r/g, " ")
.replace(/\s+/g, " ")
.trim();
}
// 使用例
console.log(
replaceLineBreaksWithSpace(
"JavaScript\n\nUtility\nGuide"
)
);
JavaScript実務でよくある活用例
CSVデータ取込
// 商品説明文の改行除去
const description =
row.description
.replace(/\r?\n|\r/g, " ");
JavaScriptCSVデータには複数行のテキストが含まれることがあり、検索や表示前に整形することがあります。
フォーム入力の正規化
// ユーザー入力
const comment =
document.getElementById("comment").value;
// 改行を除去
const normalized =
comment.replace(/\r?\n|\r/g, " ");
JavaScriptデータベース登録前の正規化処理としてよく使用されます。
ログの1行化
// ログ出力用
const message =
errorMessage.replace(/\r?\n|\r/g, " ");
JavaScriptログ管理システムでは1レコード1行で保存したいケースが多くあります。
情報セキュリティの観点で重要なポイント
入力値の正規化はセキュリティ品質向上につながる
業務システムでは改行を利用した入力回避やデータ不整合が発生することがあります。
例えば同じ内容であっても改行の有無によって別データとして扱われる場合があります。
JavaScript Guide
と
JavaScript
Guide
は見た目が似ていても内部的には異なる文字列です。
そのため検索前、比較前、保存前には文字列を正規化することが重要です。
改行を削除してはいけないケースもある
すべての場面で改行を削除してよいわけではありません。
例えば以下のようなデータでは改行自体が意味を持っています。
- メール本文
- チャットメッセージ
- Markdown文章
- ソースコード
- 契約書や文書ファイル
このような場合に無条件で改行を削除すると情報が失われる可能性があります。
必ず「改行が業務上必要かどうか」を確認してから処理を行いましょう。
まとめ
改行削除はJavaScriptの文字列操作の中でも実務利用頻度が非常に高いテクニックです。
- replace()で改行を削除できる
- \nだけではなくCRLFやCRも考慮する
- 実務では「/\r?\n|\r/g」を使用することが多い
- 改行をスペースへ変換すると可読性を維持できる
- trim()や空白正規化と組み合わせるとさらに実用的になる
- 入力値の正規化は検索精度とデータ品質向上につながる
特に業務システムでは、CSV取込、フォーム入力、ログ出力、検索条件の正規化など、多くの場面で改行除去が活躍します。単純な文字列操作に見えますが、データ品質や保守性に大きく影響する重要な技術ですので、ぜひ実務レベルで使いこなせるようになっておきましょう。
