スポンサーリンク

【PowerShell】文字列比較を行う方法

記事内に広告が含まれています。

PowerShellでは文字列比較を簡単かつ柔軟に行うことができます。

文字列の比較には主に演算子を使用し、ケースセンシティブ(大文字・小文字の区別)や部分一致を含むさまざまな方法があります。

スポンサーリンク

基本的な文字列比較演算子

比較演算子一覧

以下の演算子を使って文字列比較を行います。

演算子説明
-eq等しい
-ne等しくない
-likeワイルドカードを使用した一致
-notlikeワイルドカードを使用した不一致
-match正規表現を使用した一致
-notmatch正規表現を使用した不一致
-contains配列に含まれているかを確認
-notcontains配列に含まれていないかを確認

大文字・小文字の区別

PowerShellでは、演算子の前に c を付けると大文字・小文字を区別する比較になります。
例: -ceq, -clike, -cmatch など。

逆に、i を付けると大文字・小文字を区別しない比較になります。
例: -ieq, -ilike, -imatch など。

スポンサーリンク

サンプルスクリプト

等しいかどうかを比較

# 文字列が等しいかどうか
$string1 = "PowerShell"
$string2 = "powershell"

# 大文字・小文字を区別しない比較
if ($string1 -ieq $string2) {
    Write-Output "同じ文字列です(大文字・小文字を無視)"
} else {
    Write-Output "異なる文字列です(大文字・小文字を無視)"
}

# 大文字・小文字を区別する比較
if ($string1 -ceq $string2) {
    Write-Output "同じ文字列です(大文字・小文字を区別)"
} else {
    Write-Output "異なる文字列です(大文字・小文字を区別)"
}

部分一致を確認

# 部分一致(ワイルドカードを使用)
$string = "PowerShell is awesome"

if ($string -like "*awesome*") {
    Write-Output "文字列に 'awesome' が含まれています"
} else {
    Write-Output "文字列に 'awesome' は含まれていません"
}

正規表現で一致を確認

# 正規表現で一致を確認
$string = "PowerShell123"

if ($string -match "PowerShell\d+") {
    Write-Output "文字列は 'PowerShell' に続いて数字が含まれています"
} else {
    Write-Output "条件に一致しません"
}

配列に特定の文字列が含まれているか確認する

# 配列内の文字列を検索
$array = @("apple", "orange", "banana")
$target = "orange"

if ($array -contains $target) {
    Write-Output "$target は配列に含まれています"
} else {
    Write-Output "$target は配列に含まれていません"
}

応用例

ユーザー入力の検証

# ユーザーからの入力を検証
$userInput = Read-Host "文字列を入力してください"

if ($userInput -match "^[A-Za-z]+$") {
    Write-Output "入力は英字のみです"
} else {
    Write-Output "英字以外が含まれています"
}

ファイル名フィルタリング

# フォルダ内のファイル名をフィルタリング
$files = Get-ChildItem -Path "C:\Temp" -File

foreach ($file in $files) {
    if ($file.Name -like "*.txt") {
        Write-Output "テキストファイル: $($file.Name)"
    }
}

よくあるエラーと対処法

  1. 大文字・小文字の区別に注意
    演算子の違い(例: -ceq-ieq)を理解し、適切なものを選んでください。
  2. 正規表現の特殊文字
    正規表現を使用する場合、\ を使うエスケープが必要な場合があります。
  3. 配列と文字列の混同
    -contains は配列専用です。文字列には使えません。

まとめ

PowerShellでは、演算子を駆使して簡単に文字列比較が行えます。基本の演算子だけでなく、正規表現やワイルドカードを使うことで、より高度な文字列操作が可能です。

タイトルとURLをコピーしました