PowerShell: 文字列中の改行を削除する ReplaceLineEndings

PowerShellで文字列中の改行を削除する場合は いくつか方法がありますが、 ReplaceLineEndingsメソッドを使用するのが最も簡単です。 その他にはReplaceメソッドを使ったり、 -replace演算子を使っても実現できます。

ReplaceLineEndingsメソッドで改行を削除

ReplaceLineEndingsメソッドは .NET Framework Stringクラスのメソッドです。 文字列内の改行シーケンスを全て置換します。

書式
文字列.ReplaceLineEndings(置換後文字列)

置換後文字列に""空文字を指定することで改行を削除できます。
ReplaceLineEndingsを使えば 「`n」「`r」「`r`n」の全てに対応しているので、 具体的な改行コードの内容を気にしなくて済みます。

次のサンプルコードでは、 文字列"abc"と"xyz"の間に改行コード「`n」「`r」「`r`n」があり、 それぞれの改行コードをReplaceLineEndingsで削除しています。

$s1 = "abc`nxyz"
$s2 = "abc`rxyz"
$s3 = "abc`r`nxyz"

$s1.ReplaceLineEndings("")  # abcxyz
$s2.ReplaceLineEndings("")	# abcxyz
$s3.ReplaceLineEndings("")	# abcxyz

参考サイト
String.ReplaceLineEndings メソッド (System) | Microsoft Docs

Replaceメソッド

Replaceメソッドを使用する場合、 第1引数に改行コードを指定する必要があります。 Replaceメソッドは正規表現が使えないので改行コードに応じてそれぞれの 方法を記述します。

次のサンプルコードはReplaceメソッドの使用例です。

$s1 = "abc`nxyz"
$s2 = "abc`rxyz"
$s3 = "abc`r`nxyz"

$s1.Replace("`n", "")   # abcxyz
$s2.Replace("`r", "")   # abcxyz
$s3.Replace("`r`n", "") # abcxyz

-replace演算子

-replace演算子を使用する場合は正規表現が使えます。
例えば改行コードが「`n」か「`r`n」に限定されているのなら、 正規表現で「`r?`n」と1つにまとめることも出来ます。

-replace演算子のコード例は次の通りです。

$s1 = "abc`nxyz"
$s2 = "abc`rxyz"
$s3 = "abc`r`nxyz"

$s1 -replace "`r?`n", ""  # abcxyz
$s2 -replace "`r", ""     # abcxyz
$s3 -replace "`r?`n", ""  # abcxyz
PowerShell