トッカンソフトウェア

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")



			

(出力結果)
				
True
True
True
True
-1
2

			
(参考)
演算子 概要
-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-

			



ページのトップへ戻る