1. ホーム
  2. スクリプト・コラム
  3. パワーシェル

PowerShell文字列オブジェクトのメソッド概要

2022-02-04 06:03:02

これまでの章から、PowerShellはすべてをオブジェクトに格納し、その中にメソッドと呼ばれる一連のコマンドを格納していることが分かっています。デフォルトのテキストはStringオブジェクトに格納され、このオブジェクトにはテキストを操作するための非常に便利なコマンドが多数含まれています。たとえば、ファイルの拡張子を調べるには、LastIndexOf() を使って最後の文字 "." の位置を取得し、続けて Substring() を使って拡張子の部分文字列を取得することが可能です。

PS> $path = "C:\prefs.js" 
PS> $path.Substring( $path.LastIndexOf(". ")+1 ) 
Js

別のルートでは、Split メソッドを使用して、ファイルのフルネームを分割して文字列の配列を取得し、PowerShell で -1 のインデックスを使用して配列の最後の要素を取得できます。

PS> $path.Split(". ")[-1] 
Js

次の表は、Stringオブジェクトのすべてのメソッドを示しています。

<テーブル 機能 説明 使用例 CompareTo() 他の文字列と比較する ("こんにちは").CompareTo("こんにちは") 含む() 部分文字列を含めるかどうか ("こんにちは").Contains("ll") CopyTo() 部分文字列を新しい文字列にコピーする $a = ("HelloWorld").toCharArray()("User!").CopyTo(0,

$a, 6, 5)$a

EndsWith() で部分文字列を終了させるかどうか ("こんにちは").EndsWith("lo") Equals() 文字列が他の文字列と同じかどうか ("こんにちは").Equals($a) IndexOf() 最初のマッチのインデックスを返します。 ("こんにちは").IndexOf("l") IndexOfAny() 文字列中の任意の文字に最初にマッチしたインデックスを返します。 ("Hello").IndexOfAny("loe")です。 挿入() 指定された位置に文字列を挿入する ("HelloWorld").Insert(6, "brave") GetEnumerator() 文字列に含まれるすべての文字を列挙する ("Hello").GetEnumerator()を実行します。 最終インデックス(LastIndexOf) 文字の最後のマッチ位置 ("Hello").LastIndexOf("l")です。 LastIndexOfAny() 任意の文字の最後のマッチ位置 ("Hello").LastIndexOfAny("loe")です。 パッドレフト() 文字列を指定された長さまで左詰めする ("こんにちは").PadLeft(10) 右パッド() 文字列を指定された長さまで右詰めする ("Hello").PadRight(10) + "ワールド!" 削除() 指定された長さを指定された位置から削除する ("PsTips").Remove(2,2)です。 置換() 指定された文字列を置換する ("PsTips").replace("Ps", "PS1″)。 スプリット() 指定したセパレータで文字列を切り取る ("HelloWorld").Split("l")を実行します。 StartsWith() 指定した部分文字列から始めるかどうか ("HelloWorld").StartsWith("He")です。 サブストリング() 指定された位置から指定された長さの部分文字列を取り出します。 "HelloWorld").Substring(4,3)のようになります。 ToCharArray() 文字の配列に変換する ("HelloWorld").toCharArray()を実行します。 ToLower() 小文字に変換する ("HelloWorld").toLower()を実行します。 ToLowerInvariant

()

地域ルールで小文字に変換する ("HelloWorld").ToUpperInvariant()を実行します。 ToUpper() 大文字に変換する ("HelloWorld").ToUpper()を実行します。 ToUpperInvariant

()

リージョンルールで大文字に変換する ("HelloWorld").ToUpperInvariantを使用します。

()

トリム() 文字列の前後の空白を削除する (" HelloWorld ")。トリム() TrimEnd() 文字列の末尾からスペースを取り除く ("HelloWorld")です。TrimEnd() TrimStart() 文字列の先頭からスペースを取り除く (" HelloWorld")です。TrimStart() 文字列() 指定された位置の文字を返します ("こんにちは").Chars(0)

Split()を例にしてメソッドを分析する

これまでのセクションで、Get-Memberを使って、呼び出すことができるオブジェクトにどのようなメソッドが含まれているかを確認できることを学びました。Splitの定義を見るために、簡単に復習しておくとちょうどよいでしょう。

PS C:\> ("jb51.net" | Get-Member Split).definition 
string[] Split(Params char[] separator), string[] Split(char[] separator, int count), string[] Split(char[] separator, System. StringSplitOptions options), string[] Split(char[] separator, int count, System.StringSplitOptions options), string[] Split(string[] separator, System.StringSplitOptions options), string[] Split(string[] sepa 
sepa rator, int count, System.StringSplitOptions options)

Defineプロパティは、メソッドのパラメータ定義を取得しますが、可読性はちょっと怪しいです。上の表のReplaceメソッドをそのまま使用し、セパレータを少し置き換えて可読性を高めています。

PS C:\> ("jb51.net" | Get-Member Split).definition.Replace("), ", ")`n")
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)

前述したように、バックスクオートは高級言語におけるエスケープされたバックスラッシュと類似しています。

上の出力から、Split には 6 種類の呼び出しメソッドがあることがわかると思います。

PS C:\> "https://www.jb51.net".split(":. /")
http

www
pstips
net

途中に空白があるのですが、どうしたらいいでしょうか、削除してもいいでしょうか、StringSplitOptionsは軽く搭載されているのですが。

PS C:\> "https://www.jb51.net".split(":. /",[StringSplitOptions]::RemoveEmptyEntries)
http
www
pstips
net

以前は、文字列中の隣り合う重複したスペースを削除するための小さなアルゴリズムの問題がありました。効率を考えずに、まずSplitで分割し、できた要素を指定したセパレータでつなげばよいのです。しかし、スプライシングに使用されるJoinメソッドは文字列オブジェクトの一部ではなく、以下で説明するStringクラスのものです。

テキストと正規表現

原文: https://www.jb51.net/string-object-methods.html