PowerShell文字列オブジェクトのメソッド概要
これまでの章から、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
関連
-
PowerShellスクリプトでパスワードを保存する方法
-
PowerShell 4.0によるサーバセットアップの自動化
-
PowerShellを使用してレジストリを変更する
-
PowerShellによるファイル名変更のバッチ処理例
-
統計関数のネスト深度のPowerShell実装
-
PowerShell正規表現(Regex)の右から左へのマッチング方式のコード例
-
Powershellですべてのディスクレターを取得する方法
-
Powershellで隠しファイルを表示する方法
-
PowerShell Excel、CSVの詳細紹介
-
PythonでPowerShellを呼び出してbatファイルをリモート実行する例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン