[FAQ CENTER トップ]
[Powershell FAQ トップへ]



【Powershell】contains で大文字小文字を区別しないサンプル(Case Insensitive)



更新日:2022/03/13


contains で大文字小文字を区別しない


Powershell の contains はある文字列に指定した文字列が含まれるか確認するコマンドです。
ただしそのまま使用すると大文字小文字を区別(Case Insensitive)して判定してしまいます。
そこで大文字小文字を区別しない方法に関して説明します。


サンプルコード集

以下は Windows 10 環境におけるサンプルコードと実行結果です。

以下の例では"abcdefg"という文字列に"ab"が含まれるか確認します。大文字小文字は区別されています。

サンプルコード:


if ("abcdefg".contains("ab"))
{
write-host "含まれます"}
else
{
write-host "含まれません"
}


実行結果:

含まれます






次の例では"AB"が含まれるかチェックしています。大文字小文字を区別しているので含まれない結果となっています。

サンプルコード:

if ("abcdefg".contains("AB"))
{
write-host "含まれます"}
else
{
write-host "含まれません"
}


実行結果:

含まれません




大文字小文字を区別しない方法は多数あると思いますが、分かりやすいのはToLower()により小文字変換して比較する方法です。
これなら視覚的にも分かりやすい方法だと思います。

以下では比較対象の$From ,$Toを両方とも ToLower()で小文字化してから比較しています。
ようするに"abcdefg" と "ab" に変換して比較しているということです。

サンプルコード:


$from="AbCdefg"
$to="aB"

if ($from.ToLower().contains($To.ToLower()))
{
write-host "含まれます"}
else
{
write-host "含まれません"
}

実行結果:

含まれます




次の例では逆に大文字に変換して比較しています。

サンプルコード:

$from="AbCdefg"
$to="aB"

if ($from.ToUpper().contains($To.ToUpper()))
{
write-host "含まれます"}
else
{
write-host "含まれません"
}

実行結果:

含まれます




"リストに含まれるあるいは含まれないかを判定する" -contains は大文字小文字を区別しないようです。区別するには-ccontains を使用します。(間際らしいのですが、先頭でcが重なっています。)

サンプルコード:


@("abc","def","ghi") -contains "ABC"


実行結果:

True



以下の例ではccontains により大大文字小文字を区別しています。

サンプルコード:

@("abc","def","ghi") -ccontains "ABC"

実行結果:

False








[Powershell FAQ トップへ]
[FAQ CENTER トップ]


本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018