SEブログ

【PowerShell】データの種類について(整数型と文字列型)

こんにちは!

 

今回は、データ型についてまとめてみました。

 

整数型と文字列型について

 

 

  • 整数型は、数値のみになります。1 とか 100 などです。用途としては、例えば ID 番号などに使用されます。
  • 文字列型は、文字になります。名前や住所などになります。

 

PowerShell はデータ型を自動的に割り当てられます。

例えばこんな感じです。

 

まず、$var という変数に 100 を代入します。

PS C:\Users\User> $var = 100

 

 

$varのデータ型を見てみます。$var の後に ドットを付けて.gettype() と入力します。

gettype というのはメソッドといいます。データ型を取得します。

結果、Int32 というのが表示されました。これが整数型になります。

 

PS C:\Users\User> $var.gettype()

IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True Int32 System.ValueType

 

 

今度は 100 をダブルクォーテーションで文字列にして $var に代入します。

(シングルクォーテーションだと文字列に変換してくれませんので注意が必要です。)

$var = "100"

 

 

$varのデータ型を見てみます。Stringというのが表示されました。これは文字列型になります。

ダブルクォーテーションを入れた事で、自動的に文字列型になりました。

PS C:\Users\user> $var.gettype()

IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True String System.Object

 

 

文字数を確認してみます。

まず、変数 $var に文字を代入し、文字数を表示します。

$var の変数の後にドットを付け、.Length と入力します。Length メソッドは文字数を取得します。

PS C:\Users\User> $var = "PowerShell"

PS C:\Users\User> $var.Length
10

 

 

特定の文字が入っているかいないか判定します。

まず、変数 $var に PowerShell という文字を代入し、 $var.Contains(“Power”) で Power という文字が入っているか判定します。

Contains はメソッドで、文字列に指定した文字が含まれているかどうか、True か False で結果を返します、

ここでは、指定した文字が入っているので、True が表示されます。

PS C:\Users\User> $var = "PowerShell"

PS C:\Users\User> $var.Contains("Power")
True

PS C:\Users\User> $var.Contains("DOS")
False

 

 

変数 $var に Windows PowerShell という文字を代入し、$var.IndexOf(“PowerShell”) で PowerShell の先頭の文字が何文字目か確認します。

IndexOf はメソッドで、指定した文字が、先頭から何文字目か確認します。また、0 番目から数えて返します。

ここでは 9 番目に 先頭の P があるので、 8 が表示されます。

PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.IndexOf("PowerShell")
8

 

 

変数に代入した文字を全て大文字にしてみます。

ToUpper メソッドは文字列を全て大文字に変換します。

PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.ToUpper()
WINDOWS POWERSHELL

 

 

変数に代入した文字を全て小文字にしてみます。

ToUpper メソッドは文字列を全て小文字に変換します。

PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.ToUpper()
windows powershell

 

 

特定の文字を別の文字に置き換えてみます。

Replace メソッドは第一引数を第二引数の文字に変換します。

PowerShell が第一引数で、パワーシェルが第二引数になります。

PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.Replace("PowerShell" , "パワーシェル")
Windows パワーシェル

 

 

何かのメッセージや選択肢など、例えば以下のようにダブルクォーテーションで文字列にしたものが複数行入っているものを変数に格納してみます。

こういう場合は、@” で始まり、”@ で終わります。これを入れないとエラーになります。

PS C:\Users\User> $var = @"
Question: "How are you doing ?"
Answer: "I am good, thanks."
"@

PS C:\Users\User> $var
Question: "How are you doing ?"
Answer: "I am good, thanks."

 

 

@” で始まり、”@ を入れないとエラーになります。

PS C:\Users\User> $var = 
Question: "How are you doing ?"
Answer: "I am good, thanks."
Question: : 用語 'Question:' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されているこ
とを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:2 文字:1
+ Question: "How are you doing ?"
+ ~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Question::String) [], CommandNotFoundExcepti 
on
+ FullyQualifiedErrorId : CommandNotFoundException

Answer: : 用語 'Answer:' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認
し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:3 文字:1
+ Answer: "I'm good, thanks."
+ ~~~~~~~
+ CategoryInfo : ObjectNotFound: (Answer::String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

 

 

変数の中に変数に入れたものを表示したい時、例えば以下のように年齢を変数に代入しておく事ができます。

これをヒヤドキュメントと呼ばれます。

$age = 40

$var = @"
Question: "How old are you?"
Answer: I am 40 years old.
"@

 

 

メソッドの一覧を確認したい場合は、Get-Member を書きます。

変数が文字列の場合は、文字列のメソッドが表示されます。

PS C:\Users\User> $var = PowerShell

PS C:\Users\User> $var | Get-Member

TypeName: System.String

Name MemberType Definition 
---- ---------- ---------- 
Clone Method System.Object Clone(), System.Object ICloneable.Cl...
CompareTo Method int CompareTo(System.Object value), int CompareTo(...
Contains Method bool Contains(string value) 
...
TrimStart Method string TrimStart(Params char[] trimChars) 
Chars ParameterizedProperty char Chars(int index) {get;} 
Length Property int Length {get;}

 

 

変数が整数の場合は、整数のメソッドが表示されます。

PS C:\Users\User> $var = 100

PS C:\Users\masasoma> $var | Get-Member

TypeName: System.Int32

Name MemberType Definition 
---- ---------- ---------- 
CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int ...
Equals Method bool Equals(System.Object obj), bool Equals(int obj), bool IEquata...
GetHashCode Method int GetHashCode() 
...
ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider) 
ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider) 
ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)

 

 

変数に代入されるデータを整数型に固定する事ができます。

変数の前に、[int] と入力します。こうする事で、特定のデータ型に固定させる事ができます。

また、代入した後に文字列を代入すると、エラーが出て代入に失敗します。

PS C:\Users\User> [int]$var = 100
PS C:\Users\User> $var.GetType()

PS C:\Users\User> $var = "PowerShell"
値 "PowerShell" を型 "System.Int32" に変換できません。エラー: "入力文字列の形式が正しくありません。"
発生場所 行:1 文字:1
+ $var = "PowerShell"
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataExceptio 
n
+ FullyQualifiedErrorId : RuntimeException

 

 

逆に、変数に代入されるデータを整数型に固定させない方法もあります。

変数の前ではなく、変数に代入する値の前に [int] と入力します。


$var = [int]100
$var.GetType()

$var = "PowerShell"

 

 

いかがでしょうか。説明が十分ではないかと思いますが、実際手を動かしてみるとデータ型について分かるのではないかと思います。

 

では最後までお読みいただきありがとうございました!