[PS1] Powershell の基本 (2:文字列処理)

2014年10月16日
  1. 文字列比較

     大文字/小文字区別のなしの場合は -eq -ne -lt -le -gt -ge

    PS> "A" -eq "a"
    True
    PS> "A" -ne "a"
    False
    

     大文字/小文字区別の場合は -ceq -cne -clt -cle -cgt -cge と c をつける。

    PS> "A" -ceq "a"
    False
    PS> "A" -cne "a"
    True
    

     ただ、これらの演算子には罠があり、なぜか以下の場合は True になるので注意。

    PS> "ー" -ceq "々"
    True
    

     どうしても上記を回避したい場合は、string クラスの Equals メソッドを使います。

    PS> "ー".Equals("々")
    False
    PS> [string]::Equals("ー","々")
    False
    
  2. 正規表現一致

     大文字/小文字区別のなしの場合は -match -replace

    PS> "ABCDEabcde" -match "b.*d"
    True
    PS> $matches[0]
    BCDEabcd
    PS> "ABCDEabcde" -replace "b.*d","★"
    A★e
    

     大文字/小文字区別の場合は -cmatch -creplace

    PS> "ABcdE" -match "b.*d"
    True
    PS> $matches[0]
    bcd
    PS> "ABcdE" -replace "b.*d","★"
    ABCDEa★e
    

     一致文字列を取得する場合は、$Matches を参照します。

    PS> $a = "AAAAAA_20141014_BBBBB"
    PS> $a -match "_(.*)_"
    True
    PS> $Matches
    Name Value
    ---- -----
    1    20141014
    0    _20141014_
    PS> $Matches[1]
    20141014
    

     一致箇所に名前を付けたい場合は、正規表現中に (?<変数名>正規表現)と記述することで名前付けをします。

    PS> $a = "AAAAAA_20141014_BBBBB"
    PS> $a -match "_(?<name>.*)_"
    True
    PS> $Matches
    Name Value
    ---- -----
    name 20141014
    0    _20141014_
    PS> $Matches["name"]
    20141014
    
  3. 書式整形

     -f を使用します。

    PS> "現在{0: d}日の {0:H:mm} です。" -f (Get-Date)
    現在 4日の 22:21 です。
    PS> "{0:0.000} {1:0.###}" -f 12.3,45.6
    12.300 45.6
    





タグ:
カテゴリー: PowerShell, Windows

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org