PowerShell 文字列関連
PowerShellの文字列関連をまとめます。
文字の出力
文字列はシングルクォーテーション('文字列')かダブルクォーテーション("文字列")で囲みますダブルクォーテーションの場合、変数名は変数値に置き換わります。シングルクォーテーションはそのまま出力されます。
$aaa = "X"
#ダブルクォーテーションの場合、$aaa が X で出力される
echo "123 $aaa 456"
#シングルクォーテーションの場合、$aaa が $aaa で出力される
echo '123 $aaa 456'
#スペースタブなどを間に入れないと途中で出力されてしまう
echo "123$aaa456"
(出力結果)
123 X 456
123 $aaa 456
123
変数名、シングルクォーテーション、ダブルクォーテーションを出力
ダブルクォーテーションでもアクサン・グラーヴ(`)を付けると変数名で出力されます。シングルクォーテーション、ダブルクォーテーションもこれをつけると出力出来ます。
アクサン・グラーヴ(`)はShift押しながら@のキーで入力できます。
$aaa = "X"
#アクサン・グラーヴ(`)を頭にいれると$aaaで出力される
echo "123 `$aaa 456"
#シングルクォーテーション、ダブルクォーテーションも出力できる
echo "`'`""
#シングルクォーテーション、ダブルクォーテーションは連続しても出力される
echo "a""b'c"
echo 'a"b''c'
(出力結果)
123 $aaa 456
'"
a"b'c
a"b'c
文タブ文字、改行文字の出力
#タブ文字(`t)、改行文字(`r`n)を出力
echo "タブ文字`t改行文字`r`nを出力"
(出力結果)
タブ文字 改行文字
を出力
タブ文字や改行文字を使う場合も、`(アクサン・グラーヴ)を使用します。
文字の編集
#連結
$aaa = "a" + "b"
$aaa += "c"
echo $aaa
#echoの場合、カッコをつけないと改行される
echo "12" + "34"
echo ("56" + "78")
#置換はReplaceを使用
echo "123123".Replace("23", "ab")
(出力結果)
abc
12
+
34
5678
1ab1ab
文字から数値に変換
$a = "10"
$b = [int]$a + 1
echo $b
文字列の抜き出し(文字数)
文字の抜き出しはSubstringを使います。
$aaa = "1234567890"
#指定位置から後ろを取得(開始位置:0~)
echo $aaa.SubString(2)
#一部を取得(開始位置:0~、文字列長)
echo $aaa.SubString(1,2)
#先頭と末尾を抜かす
echo $aaa.SubString(1, $aaa.Length - 2)
(出力結果)
34567890
23
23456789
文字列の抜き出し(バイト数)
#指定バイトの文字を抜き出し
function SubstringB($str,$start,$length){
#SJISでバイト計算
$encoding = [Text.Encoding]::GetEncoding(932)
#UTF8でバイト計算
#$encoding = New-Object System.Text.UTF8Encoding $False
$bytes = $encoding.GetBytes($str)
return $encoding.GetString($bytes, $start, $length)
}
#対象文字列
$input = "123四56789"
#指定バイトを出力
$output = SubstringB $input 6 3
echo $output
(出力結果)
678
文字列を指定文字で分ける
指定文字で区切って配列はSplitを使います。
#指定文字で区切って配列作成
$strs = "1,23,456".Split(",")
#配列の指定位置を出力
echo $strs[0]
echo $strs[1]
#配列の長さを取得
echo $strs.Length
(出力結果)
1
23
3
文字列を指定文字列で分ける
指定文字列で区切って配列は-Splitを使います。
#指定文字列で区切って配列作成
$strs = '"123","456","789"' -split '","'
#配列の指定位置を出力
echo $strs[0]
echo $strs[1]
echo $strs[2]
(出力結果)
"123
456
789"
文字列の長さ取得
#文字列の長さを取得
echo "12345".Length
(出力結果)
5
文字列の比較など・・・
#指定文字が含まれるか
echo "1234567890".contains("456")
#指定文字から始まるか
echo "1234567890".StartsWith("123")
#指定文字で終わるか
echo "1234567890".EndsWith("890")
#同じ文字列か
echo ("123" -eq "123")
#大きさ比較
echo "001".CompareTo("002")
#指定文字の位置
echo "1234567890".IndexOf("345")
#指定文字より後ろを取得
$a = "1234567890"
$b = "345"
if($a.contains($b) ){
echo $a.SubString($a.IndexOf($b) + $b.Length)
}
(出力結果)
True
True
True
True
-1
2
67890
(参考)
演算子 | 概要 |
---|---|
-eq | 等しい(==)。大文字、小文字を意識しない 意識する場合は-ceqとする |
-ne | 等しくない(!=) |
-gt | より大きい(>) |
-ge | 以上(>=) |
-lt | 未満(<) |
-le | 以下(<=) |
-like | あいまい検索 ワイルドカード:* 一文字:? 否定の場合は -notlike とする |
-match | 正規表現 否定の場合は -notmatch とする |
Trim
文字列の前後のスペースを削除するにはTrimを使用します。
$str = " abc "
echo ("-" + $str + "-")
echo ("-" + $str.Trim() + "-")
echo ("-" + $str.TrimStart() + "-")
echo ("-" + $str.TrimEnd() + "-")
(出力結果)
- abc -
-abc-
-abc -
- abc-
ページのトップへ戻る