PowerShellで学ぶ基本的な文字列操作の方法

PowerShellはWindowsの強力なスクリプト言語であり、システム管理や自動化に非常に役立つツールです。

特に文字列操作は、ファイルやログの処理、ユーザー入力の解析など多くの場面で重要です。

本記事では、PowerShellでの基本的な文字列操作の方法について解説します。

文字列の基本操作

まずは、PowerShellでの基本的な文字列操作から見ていきましょう。

文字列の作成

PowerShellでは、文字列はダブルクォーテーション (“) またはシングルクォーテーション (‘) で囲むことで作成できます。

$greeting = "Hello, World!"
$greeting2 = 'PowerShell is fun!'

ダブルクォーテーションを使用すると、変数の中身が文字列に埋め込まれますが、シングルクォーテーションではそのまま文字列として扱われます。

$name = "Taro"
$greeting = "Hello, $name!"  # 変数が展開される -> "Hello, Taro!"
$greeting2 = 'Hello, $name!'  # 変数が展開されない -> "Hello, $name!"

文字列の連結

PowerShellでは、文字列同士を + 演算子で連結できます。

$firstPart = "Power"
$secondPart = "Shell"
$fullString = $firstPart + $secondPart  # "PowerShell"

+= 演算子を使って文字列を追加することもできます。

$message = "Hello"
$message += ", World!"  # "Hello, World!"

文字列の長さを取得する

文字列の長さを取得するには、.Length プロパティを使用します。

$string = "PowerShell"
$length = $string.Length  # 10

文字列の検索と置換

文字列の中から特定の文字やパターンを検索・置換する方法を見ていきましょう。

部分文字列の検索

-like-match 演算子を使うことで、文字列の中に特定の部分文字列が含まれているかを調べることができます。

$string = "PowerShell is powerful"
$result = $string -like "*Shell*"  # True

正規表現を使った検索には -match 演算子を使用します。

$string = "abc123"
$result = $string -match "\d+"  # True (数字が含まれている)

文字列の置換

文字列の置換には -replace 演算子を使います。

$string = "PowerShell is powerful"
$newString = $string -replace "powerful", "amazing"  # "PowerShell is amazing"

正規表現も -replace 演算子で利用可能です。

$string = "123-456-7890"
$newString = $string -replace "\d", "*"  # "***-***-****"

部分文字列の操作

文字列の一部を抽出したり、特定の位置から文字を取得する操作について見ていきます。

部分文字列の取得

Substring() メソッドを使って、文字列の一部を取得できます。

$string = "PowerShell"
$substring = $string.Substring(0, 5)  # "Power"

この例では、0 から始まり、5文字分を取得しています。

文字列の分割

Split() メソッドを使って、文字列を特定の文字で区切って配列に変換できます。

$string = "apple,banana,cherry"
$array = $string.Split(",")  # @("apple", "banana", "cherry")

文字列の結合

配列を再び文字列に結合するには、-join 演算子を使用します。

$array = @("apple", "banana", "cherry")
$joinedString = $array -join ","  # "apple,banana,cherry"

大文字と小文字の変換

PowerShellでは、文字列の大文字・小文字の変換も簡単に行えます。

小文字に変換

すべての文字を小文字にするには、ToLower() メソッドを使用します。

$string = "PowerShell"
$lowerString = $string.ToLower()  # "powershell"

大文字に変換

すべての文字を大文字にするには、ToUpper() メソッドを使用します。

$string = "PowerShell"
$upperString = $string.ToUpper()  # "POWERSHELL"

ホワイトスペースの削除

文字列の先頭や末尾にある不要な空白文字(ホワイトスペース)を削除する方法について解説します。

トリミング

Trim() メソッドを使うと、文字列の先頭と末尾にあるホワイトスペースを削除できます。

$string = "  Hello, World!  "
$trimmedString = $string.Trim()  # "Hello, World!"

TrimStart()TrimEnd() メソッドを使うと、先頭または末尾のみのホワイトスペースを削除できます。

$trimmedStart = $string.TrimStart()  # "Hello, World!  "
$trimmedEnd = $string.TrimEnd()  # "  Hello, World!"

演習問題

学んだ内容を実践的に理解するために、以下の演習問題を用意しました。

問題1: 文字列の連結と変数の展開

  1. 変数 $firstName と $lastName に任意の名前を代入し、それらを連結してフルネームを表示するスクリプトを書いてください。
  2. ダブルクォーテーションとシングルクォーテーションを使って、変数展開の違いを確認してください。
解答例
$firstName = "John"
$lastName = "Doe"

# 変数展開あり
$fullName = "$firstName $lastName"
Write-Output $fullName  # John Doe

# 変数展開なし
$fullNameSingleQuote = '$firstName $lastName'
Write-Output $fullNameSingleQuote  # $firstName $lastName

問題2: 部分文字列の抽出と置換

  1. “$123.45” という文字列から、数字の部分だけを抽出してください。
  2. その抽出した数字を別の形式に置き換えてください(例: “#123-45″)。
解答例
$string = "$123.45"
# 1. 数字部分の抽出
$number = $string.Substring(1)  # "123.45"

# 2. 形式の置換
$newFormat = $number -replace "\.", "-"  # "123-45"
Write-Output $newFormat  # 123-45

問題3: 文字列の分割と結合

  1. “apple,banana,cherry” という文字列をカンマで分割し、配列に変換してください。
  2. その配列を “-” で結合して新しい文字列を作成してください。
解答例
# 1. 文字列の分割
$string = "apple,banana,cherry"
$array = $string.Split(",")  # @("apple", "banana", "cherry")

# 2. 文字列の結合
$joinedString = $array -join "-"  # "apple-banana-cherry"
Write-Output $joinedString  # apple-banana-cherry

この記事では、PowerShellでの基本的な文字列操作について説明しました。

これらの操作を理解することで、より複雑なスクリプトや自動化タスクを効率的に行うことができるでしょう。