トッカンソフトウェア

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
	

■文字列の抜き出し(文字数)
文字の抜き出しはSubstringを使います。
				
$aaa = "1234567890"

#指定位置から後ろを取得(開始位置:0~)
echo "1234567890".SubString(2)

#一部を取得(開始位置:0~、文字列長)
echo "1234567890".SubString(1,2)


			
(出力結果)
				
34567890
23

			

■文字列の抜き出し(バイト数)
				
#指定バイトの文字を抜き出し
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

			

■文字列の長さ取得
				
#文字列の長さを取得
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 とする



ページのトップへ戻る