none
powershellで変数の中身が全角か半角か判定したい RRS feed

  • 質問

  • お世話になります。

    powerhellで変数に入っている中身が全角か半角か知りたいのですが、

    調べる関数がわかりません。基礎的な質問で申し訳ありませんが宜しくお願いします。

    #半角と判定したい

    $a="a"

    #全角と判定したい

    $b="あ"

    2017年6月11日 5:06

回答

  • 標準のコマンドとしては無いと思うので、簡単な関数を作ってやると良いと思います。正規表現を使うなど色々方法はあると思いますが、ここでは、Shift JISで2バイトとなる文字を「全角」、1バイトとなる文字を「半角」という判定法を採用した関数を書きました。

    function IsZenkaku
    {
        param(
            [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
            [ValidateLength(1, 1)]
            [string]
            $Text
        )
        process
        {
            $shiftJis = [System.Text.Encoding]::GetEncoding("Shift_JIS")
            $shiftJis.GetByteCount($Text) -eq 2
        }
    }
    
    $a = "a"
    $b = "あ"
    
    #半角はFalse
    IsZenkaku $a
    
    #全角はTrue
    IsZenkaku $b

    2017年6月11日 5:50
    モデレータ

すべての返信

  • 標準のコマンドとしては無いと思うので、簡単な関数を作ってやると良いと思います。正規表現を使うなど色々方法はあると思いますが、ここでは、Shift JISで2バイトとなる文字を「全角」、1バイトとなる文字を「半角」という判定法を採用した関数を書きました。

    function IsZenkaku
    {
        param(
            [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
            [ValidateLength(1, 1)]
            [string]
            $Text
        )
        process
        {
            $shiftJis = [System.Text.Encoding]::GetEncoding("Shift_JIS")
            $shiftJis.GetByteCount($Text) -eq 2
        }
    }
    
    $a = "a"
    $b = "あ"
    
    #半角はFalse
    IsZenkaku $a
    
    #全角はTrue
    IsZenkaku $b

    2017年6月11日 5:50
    モデレータ
  •   

    牟田口大介様ご返信ありがとうございます。

    標準ではやはりなかったのですね。

    ないものは作ると良いのですね。

    大変勉強になりました。

    ありがとうございました。

    2017年6月11日 6:08