PowerShellでは文字列比較を簡単かつ柔軟に行うことができます。
文字列の比較には主に演算子を使用し、ケースセンシティブ(大文字・小文字の区別)や部分一致を含むさまざまな方法があります。
Contents
基本的な文字列比較演算子
比較演算子一覧
以下の演算子を使って文字列比較を行います。
演算子 | 説明 |
---|---|
-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)"
}
}
よくあるエラーと対処法
- 大文字・小文字の区別に注意
演算子の違い(例:-ceq
と-ieq
)を理解し、適切なものを選んでください。 - 正規表現の特殊文字
正規表現を使用する場合、\
を使うエスケープが必要な場合があります。 - 配列と文字列の混同
-contains
は配列専用です。文字列には使えません。
まとめ
PowerShellでは、演算子を駆使して簡単に文字列比較が行えます。基本の演算子だけでなく、正規表現やワイルドカードを使うことで、より高度な文字列操作が可能です。