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)
前後の空白を削除する
文字列の前後の空白を削除するには、Trim
、TrimStart
、TrimEnd
を使います。
$str = “ Hello “
# 前後の空白を削除する
$str.Trim()
# 前の空白を削除する
$str.TrimStart()
# 後ろの空白を削除する
$str.TrimEnd()
文字列を挿入する
Insert
を使います。挿入する位置と文字列を指定します。
$str = “Hello!!!”
$str.Insert(5, “ Powershell!!!”)
文字列を置換する
Replace
を使います。置換前の文字列と置換後の文字列を指定します。
$str = “Hello, C++!!!”
$str.Replace(“C++”, “Powershell”)
最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。