【2023年】これからブログを始める人へおすすめの書籍

Kissy

Powershellで文字列を操作する方法まとめ

作成: 更新:

Powershellで文字列を操作する方法まとめ
こんばんは、きっしーです。

この記事ではPowershellで文字列の操作方法についてまとめました。文字列の操作はよく使う使うので、しっかり覚えておきたいですね。

代入

変数に代入する

変数には=で代入します。

$str = "こんにちは"

変数の中では文字列に置き換わる

文字列の展開
“”(ダブルクォーテーション)の中の変数は展開されますが、’’(シングルクオーテーション)の中の変数は展開されません。

以下の$str2の文字列中に$str1がありますが、$str2に代入時にWorldに置き換わります。

$str1 = "World"
$str2 = "Hello, $str1!!!"
# $str2は"Hello, World!!!"に置き換わる。

$str1 = "Powershell"
# $str2へ代入した後に、$str1の値を変更しても$str2は"Hello, World!!!"のまま変わらない。

以下はシングルクオーテーションなので文字列中の変数が展開されません。

$str1 = "World"
$str2 = 'Hello, $str1!!!'
# $str2は'Hello, $str1!!!'のまま。変数は展開されない。

文字列の中の変数がうまく置き換わらない場合

文字列の中の変数がうまく置き換わらない場合は、$()でくくってあげるといい。

$no = 2
$array = @("C", "C++", "PowerShell")
$str = "I study $($array[$no])!!!"
# $strは"I study PowerShell!!!"に置き換わる。

そのほか、書式設定演算子-fを使う方法もあります。

クォーテーションの入力する

文字列にダブルクォーテーション"を入力したい場合は、直前にバッククオーテーションをつけます。

$str1 = "Hello, `"World!!`""

シングルクオーテーション'はエスケープできない。

複数行の文字列を入力する

複数行の文字列を入れる場合には、@""@でくくります。これをヒア文字列といいます。

$str = @"
Hello,
World!!!
"@

結合・分割

結合する

文字列を結合するには、+演算子や+=演算子を使います。

$str1 = "Hello" + ", " + "World!!!"

$str2 = "Hello"
$str2 += ", "
$str2 += "World!!!"

区切り文字で結合する

stringクラスのJoinメソッドを使うと、CSVのような区切り文字で区切られた文字列を作れます。

$array = @("Hello", "Powershell", "World")
$str = [string]::Join(",", $array)

区切り文字で分割する

Joinメソッドとは反対に、区切り文字で分割する場合には、Splitメソッドを使います。CSVを扱う場合に便利です。

$str = "Hello,Powershell,World"
$array = $[str.ing]::Split(",")

カウント

文字数をカウントする

文字数をカウントする場合には、Lengthプロパティを使います。

$str = "Hello, World!!!"
$str.Length

バイト数をカウントする

文字列のバイト数をカウントするには、`Encoding.GetByteCount’メソッドを使います。バイト数はエンコード方式によって異なるため、文字エンコードを指定する必要があります。ここでは、Shift-JISを指定します。

[System.Text.Encoding]::GetEncoding(“Shift_Jis”).GetByteCount("こんにちは")

変換

大文字↔︎小文字

大文字にするにはToUpper、小文字にするにはToLowerメソッドを使います。

$str1 = "Hello, World!!!".ToUpper()
$str2 = "HELLO, WORLD!!!".ToLower()

10進数文字列↔︎数値

10進数文字列⇒数値にするには、キャスト(型変換)を使います。

$str = "123"
$a = [int]$str

数値⇒文字列の場合は、ToStringメソッドを使います。

$a = 1
$str = $a.ToString()

16進数文字列↔︎数値

16進数文字列⇒数値にするには、'ToInt32’メソッドを使います。

$a = [System.Convert]::ToInt32("0A", 16)

数値⇒文字列の場合は、ToStringメソッドを使います。

$a = 123

# アルファベットを大文字にする場合
$str = $a.ToString(“X”)

# アルファベットを小文字にする場合
$str = $a.ToString(“x”)

# 0で埋める場合は桁数(下例は4桁)を入れる0
$str = $a.ToString(“X4”)

2進数文字列↔︎数値

16進数の場合とほぼ同じです。

2進数⇒数値にするには、ToInt32メソッドを使います。ToInt32の第2引数に2を入れます。

$a = [System.Convert]::ToInt32(“1100”, 2)

数値⇒2進数文字列の場合には、ToStringメソッドを使います。第2引数には2を入れます。

$a = 10
$str = $a.ToString($a, 2)

検索・チェック

指定した文字列が、最初に見つかった位置を調べる

IndexOfを使います。指定した文字列が見つからない場合は、-1が返ります。

$str = “Hello, Powershell is Powerful!!!”
$i = $str.IndexOf(“Power”)

指定した文字列が、最後に見つかった位置を調べる

LastIndexOfを使います。見つからない場合は、-1が返ります。

$str = “Hello, Powershell is Powerful!!!”
$i = $str.LastIndexOf(“Power”)

チェック

文字列が空かどうかチェックする

# IsNullOrEmpty()を使う方法
$str
[String]::IsNullOrEmpty($str)

# boolにキャストする方法
[bool]$str

# if文でチェックする場合は、自動的にboolにキャストされる。
# このため、変数だけ入れればよい
if ($str)
{
  # 文字列が空でない場合の処理
}

指定した文字列が、含まれているかどうかをチェックする

Containsを使います。結果はbooleanで返ります。

$str = “Hello, Powershell is Powerful!!!”
$str.Contains(“Power”)

指定した文字列で、始まっているかチェックする

StartsWithを使います。結果はbooleanで返ります。

$str = “Hello, Powershell!!!”
$str.StartsWith(“Hello”)

指定した文字列で、終わっているかチェックする

EndsWithを使います。結果はbooleanで返ります。

$str = “Hello, Powershell!!!”
$str.EndsWith(“Powershell!!!”)

指定した文字列が数値として有効かチェックする

TryParseを使います。結果はbooleanで返ります。また、第2引数の変数に数値に変換した結果が入ります。

[int]::TryParse(“123”, $a)

削除・挿入・置換

指定した位置から、指定した文字数を削除する

文字列の途中を削除する場合、Removeを使います。

$str = “Hello, Powershell!!!”
$str.Remove(7, 5)

前後の空白を削除する

文字列の前後の空白を削除するには、TrimTrimStartTrimEndを使います。

$str = “  Hello  “

# 前後の空白を削除する
$str.Trim()

# 前の空白を削除する
$str.TrimStart()

# 後ろの空白を削除する
$str.TrimEnd()

文字列を挿入する

Insertを使います。挿入する位置と文字列を指定します。

$str = “Hello!!!”
$str.Insert(5, “ Powershell!!!”)

文字列を置換する

Replaceを使います。置換前の文字列と置換後の文字列を指定します。

$str = “Hello, C++!!!”
$str.Replace(“C++”, “Powershell”)

最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。

関連記事

SPONSORED LINK
SPONSORED LINK