文字列からPowerShellサブ文字列を抽出する方法

2021年5月26日 40320 ビュー powershell-サブストリング

PowerShellでは、サブストリングはストリングの一部です。次のいずれかを使用して、文字列からPowerShellサブ文字列を作成できます。 サブストリン g、 スプリット メソッド。





文字列の例は次のとおりです。 subdomain.domain.com 。の部分文字列 subdomain.domain.com それは サブドメイン 、 ドメイン 、 と と 。



このSゾーンでは、PowerShellサブストリングについて学ぶために必要なすべてをお教えします。

具体的には、を使用して文字列から部分文字列を抽出する方法を学習します 部分文字列 と スプリット メソッド 。さらに、PowerShellについて学習します スプリット オペレーター 。



最後に、PowerShell文字列をサブ文字列に分割して使用する方法を学習します。 部分文字列 方法 サブストリングを抽出します。



投稿トピックを閲覧する

PowerShellサブストリングを抽出する方法 部分文字列 方法

サブストリングメソッドを使用してPowerShellサブストリングを抽出する方法

この最初のセクションでは、文字列から部分文字列を抽出する方法を学習します。 部分文字列 方法 。



私は、同じ文の文字列の一部として部分文字列を使用していることを知っています 部分文字列 方法 混乱するかもしれません。わかりやすくするために、文字列の一部としての部分文字列は、文字列の一部を抽出することを指します。たとえば、文字列usa.itechguides.comからサブ文字列usaを抽出します。それどころか、 部分文字列 方法 PowerShellを指します 部分文字列 方法 タスクを実行するために使用されます。

このセクションでは、構文を説明していきます。 部分文字列 方法。



PowerShellの構文 部分文字列 方法

の構文 部分文字列 方法:

string.substring(int startIndex, int length)

このセクションの残りの部分を確実に理解するには、これらの構文の説明に注意を払うことが非常に重要です。

構文からわかるように、 部分文字列 方法 文字列の、あなたは入力します startIndex と 長さ 。

The int 構文では、 startIndex と 長さ 数字(整数)です

The startIndex 抽出する部分文字列の最初の文字です(左から右に数え、結果に1を加算して開始します) の指標 –最初の文字を除く)。

さらに、 長さ 抽出する文字数です。1から始まり、抽出する部分文字列の最初の文字から数えます。

次のセクションでは、 の指標 方法 とそれを使用して決定する方法 startIndex と 長さ 。このかなり複雑な概念を説明しようとする私の試みにまだ混乱している場合は startIndex と 長さ 、落胆しないでください。ガイドを進めるにつれて、より明確になります。

この概念を理解しやすくするために、次のセクションで説明します の指標 と LastIndexOf メソッド。

PowerShellサブストリングの位置を識別する方法 の指標 と LastIndexOf メソッド

の構文を説明したとき 部分文字列 方法、私は言った startIndex PowerShellの 部分文字列 メソッドは、抽出する部分文字列の最初の文字です(結果に1を加算することで決定されます) の指標 その部分文字列の値)。

このセクションでは、 の指標 と LastIndexOf メソッド PowerShell文字列の例を使用して、PowerShellが文字列内の部分文字列文字の位置を決定する方法を示します。

説明のために、最初の文字uのインデックス位置を調べてみましょう。 usa.itechguides.com –以下のコマンドを実行して…

'usa.itechguides.com'.  IndexOf  ('u')
The の指標 メソッドは、文字列の最初の出現を検索します(左から右に数え、ゼロから開始します)

結果はゼロ(0)です…

何でこれが大切ですか?よろしくお願いします!

あなたは覚えています startIndex と 長さ PowerShellの構文で 部分文字列 方法 ?

string.substring(int startIndex, int length)

文字uのインデックス位置が usa.itechguides.com によると、ゼロ(o) の指標 方法 –これは、文字uで始まる文字を抽出する場合、 startIndex 文字列の最初の文字であるため、0になります。

の結果に1を加算する規則の例外 の指標 を決定するコマンド startIndex 文字列の最初の文字です。 The startIndex 文字列の最初の文字のは常にゼロ(0)になります。

なんてすごい!

次に、これに別のレイヤーを追加しましょう。文字列内の最後の文字を検索したい場合はどうなりますか?

使用する代わりに、 の指標 方法 、使用します LastIndexOf 方法 。このコマンドは、文字列内で最後に出現する文字uの位置を判別します。 usa.itechguides.com :

'usa.itechguides.com'.  LastIndexOf  ('u')
LastIndexOfは、文字列の最後の出現箇所を検索します(左から右に数え、ゼロから開始します)

結果は10…

IndexOfメソッドとLastIndexOfメソッドを使用してPowerShellサブストリングの位置を特定する方法PowerShellが文字列内の部分文字列文字の位置を決定する方法についてこの知識があると、複雑さに関係なく、PowerShell文字列を操作するのに役立ちます。

文字列の左側にあるPowerShellサブ文字列を抽出する方法

このセクションでは、文字列の左側から部分文字列を抽出する方法を学習します。実稼働環境で使用できる例を示します。

複数のサブドメインを持つActiveDirectoryドメインを管理していると仮定します。サブドメインには、3文字の国名を使用して名前が付けられます。サブドメインの例は次のとおりです。 USA.itechguides.com 、 jpn.itechguides.com 。

さらに、ActiveDirectoryドメイン内で国のサブドメイン名に基づいて条件付きコマンドを実行する必要があるPowerShellスクリプトを作成していると仮定します。

このセクションでは、サブドメインを抽出する方法を説明します 使用法 、 から USA.itechguides.com 。

サブドメインを保存することから始めましょう、 使用法 itechguides.com と呼ばれる変数で サブドメイン 。

$subdomain = '    USA  .itechguides.com  '

以下の手順に従って抽出します 使用法 、 から USA.itechguides.com :

  1. サブドメインが保存される変数の横にピリオド(。)を入力し、その後に単語を入力します 部分文字列 。最後に、開き角かっこを追加します…
$subdomain  .   Substring  (
入った後 部分文字列 、キーボードのTabキーを押すこともできます。 Tabキーを押すと、PowerShellは開き角かっこ(。
  1. 次に、 startIndex その後にコンマ(、)が続きます。これを行う前に、米国を抽出することを忘れないでください。この例では、最初の文字から抽出したいので、 startIndex ゼロ(0)です。コマンドは次のようになります。
$subdomain  .   Substring  (0,
  1. 最後に、 長さ 、その後に閉じ括弧、)が続きます。この例では、 長さ (隣の数字から数えて startIndex )は3 – startIndex は0で、1を0に加算すると1になります。

    Uから数える場合–米国には3文字あります– 長さ 合計3文字。

    これが最終的なスクリプトです…
$subdomain  .   Substring  (0,3)

コマンドの動作を確認するには、まず以下のコマンドを実行します…

$subdomain = '  USA.itechguides.com  '

これにより、文字列が保存されます。 USA.itechguides.com PowerShell変数では、 $サブドメイン 。次に、文字列からUSAサブ文字列を抽出するコマンドを実行します。 USA.itechguides.com 。

$subdomain  .   Substring  (0,3)

予想通り、結果はUSAです!

親ドメインを抽出する場合はどうなりますか? itechguides.com から USA.itechguides.com ?私たちの startIndex と 長さ ?

あなたの startIndex 、最初に実行します の指標 コマンド、最初のピリオド(。)を入力として使用します。

$subdomain  .     IndexOf    ('.')

結果は3…

文字列の左側にあるPowerShellサブ文字列を抽出する方法

私の以前の説明によると、 startIndex の結果から の指標 コマンド、1を追加します。1を3に追加すると、 startIndex は4です。

次に、 長さ 、抽出する文字列の最初の文字から始めて、1から数え始めます。次に、文字列から抽出する最後の文字で停止します。

抽出したいことを忘れないでください itechguides.com から USA.itechguides.com ?

抽出したい文字列の最初の文字から数えて(i)、1から始まり、 長さ は15( itechguides.com 15文字です)。

これらの値に基づいて、PowerShellサブストリングを抽出するコマンド itechguides.com から USA.itechguides.com は…

$subdomain  .   Substring  (4,15)

結果は次のとおりです。 itechguides.com !

最後に、このかなり紛らわしい概念を単純化するために startIndex 、 の指標 、 と 長さ 、ここに要約があります:

  1. The startIndex PowerShell文字列の最初の文字のは常にゼロ(0)になります
  2. 決定するには startIndex 部分文字列の場合、1を追加します の指標 コマンド結果
  3. 最後に、 長さ 抽出するPowerShellサブストリングの数は、サブストリングの最初の文字からサブストリングの最後の文字までの総数(1から始まる)です。

指定された文字の前後にPowerShellサブストリングを抽出する方法

このセクションでは、指定した文字の前後にPowerShellサブストリングを抽出する方法を説明します。

これを説明するために、サブドメインに戻りましょう…

$subdomain = '  USA.itechguides.com  '

最初のピリオド(。)の後、広告の前に部分文字列を抽出したいとします。事実上、USA(指定された文字の前の部分文字列)を抽出したいと思います。

さらに、itechguides.com(指定された文字の後の部分文字列)を抽出したいと思います。

最初のステップは、 の指標 方法 参照文字の位置を決定します。以下のコマンドは、参照文字の位置をという変数に保存します。 refcharacter 。

$refcharacter = $subdomain.IndexOf('.')

次に、 部分文字列 方法 参照文字の前の部分文字列を抽出します。

$subdomain.Substring(0,$refcharacter)

結果は次のとおりです…

最後に、次のPowerShellを使用します 部分文字列 方法 参照文字の後に部分文字列を抽出します

$subdomain.Substring($refcharacter+1)

予想どおり、結果はピリオドの後に部分文字列を抽出します。 itechguides.com !

指定された文字の前後にPowerShellサブストリングを抽出する方法

2文字間のPowerShell部分文字列を抽出する方法

このセクションでは、抽出する方法を説明します itechguides から USA.itechguides.com 。この例では、2文字のPowerShellサブストリングを抽出します。

この例の2つの文字は、最初と最後のピリオド(。)です。スクリプトには3つのコマンドが必要です。

最初のコマンドでは、 の指標 方法 最初の参照文字(。)の位置を決定します。次に、結果をという変数に保存します firstref 。

$firstref = $subdomain.IndexOf('.')

次に、 LastIndexOf 方法 最後の参照文字の場所を判別します。結果はに保存されます lastref 変数。

$lastref = $subdomain.LastIndexOf('.')

最後に、PowerShellサブストリングを抽出するには、 itechguides 2文字(ピリオド)の間で、以下のコマンドを実行します…

$subdomain.Substring($firstref+1,$lastref-4)

コマンドでは、結果に1を追加しました の指標 指図。この例では、3で、合計4になります。

これは私たちを作ります startIndex 四。

さらに、PowerShellでは 部分文字列 方法 、使用しました 長さ なので $ lastref-4 。

以前のコマンドから、 $ lastref 結果を保存した変数です LastIndexOf 指図。

結果は15です。15から4を削除すると、 長さ 十一。

最後のコマンドの結果は次のとおりです。 itechguides !

Splitメソッドを使用してPowerShellサブストリングを抽出する方法

Splitメソッドを使用してPowerShellサブストリングを抽出する方法

このガイドの最初のセクションでは、PowerShellサブストリングを抽出する方法について説明しました。 部分文字列 方法 。このセクションでは、PowerShellサブストリングを抽出する方法を学習します。 スプリット 方法 。

いつものように、このセクションはPowerShellの構文から始めます スプリット 方法 。

PowerShellの構文 スプリット 方法

の構文 スプリット PowerShellサブストリングを抽出する方法は次のとおりです。

string.Split('delimiter')[substring position]

区切り文字は、PowerShell文字列を個々のサブ文字列に分割するために使用する任意の文字です。

[]括弧内に配置された部分文字列の位置は、文字列から返す特定の部分文字列を選択するために使用されます。

PowerShell分割で複数の区切り文字を使用する方法

PowerShellの構文に見られるように スプリット 方法 、区切り文字は1つだけです。ただし、複数の区切り文字を含む文字列からサブ文字列を分割する場合は、PowerShellを使用する必要があります スプリット オペレーター 、 代わりは。

PowerShellの構文 スプリット 演算子は…

string -  Split  ('delimiter')

複数の区切り文字を使用する場合は、最初に文字列を変数(この例では$ string)に保存します。次に、自動パイプライン変数$ _を使用して、以下に示すように複数の区切り文字を追加します。

$string -Split {$_ -eq 'delimiter2' -or $_ -eq 'delimiter1'}

たとえば、これを分割できます ActiveDirectoryの識別名 、OU = LON、OU = DEV、DC = ITECHGUIDES、DC = COM – 2つの区切り文字、=、および、を使用します。

まず、DNを$ ADDNという変数に保存しましょう…

$ADDN = 'OU=LON,OU=DEV,DC=ITECHGUIDES,DC=COM'

次に、=、および、区切り文字を使用して文字列を分割するには、次のコマンドを使用します。

$ADDN -Split {$_ -eq '=' -or $_ -eq ','}

ビンゴ、最後のコマンドは文字列を個々のPowerShellサブ文字列に分割します!

次のセクションでは、部分文字列の1つを返す方法を学習します。

を使用してPowerShellサブストリングを抽出する方法 スプリット 方法

前のセクションでは、PowerShellを使用して文字列を個々のサブ文字列に分割する方法を説明しました スプリット オペレーター 。これが最後のコマンドです…

$ADDN -Split {$_ -eq '=' -or $_ -eq ','}

このコマンドは、文字列を個々のサブ文字列に分割します。

Splitメソッドを使用してPowerShellサブストリングを抽出する方法

の構文について話し合ったとき スプリット PowerShellサブストリングを抽出する方法は、返したいサブストリングの位置を含む[]ブラケットを含めました。

string.Split('delimiter')[substring position]

PowerShellは、サブストリングの位置にゼロ(0)から番号を付けます。したがって、Active Directory DNの例に戻ると(下のスクリーンショットを参照)、最初のサブストリングOUは位置0(0)にあり、LONは位置1にあります。

Splitメソッドを使用してPowerShellサブストリングを抽出する方法

したがって、LONを返すために、最後のコマンドを[1]括弧で囲みます。この場合には、 1 返したい部分文字列の位置です。

これがコマンドです…

($ADDN -Split {$_ -eq '=' -or $_ -eq ','})[1]

コマンドの結果は次のとおりです。

または、コマンドの結果を次のコマンドで保存することもできます。 スプリット オペレーター 変数に。

$ADDNSubstrings = $ADDN -Split {$_ -eq '=' -or $_ -eq ','}

次に、部分文字列の位置を[]角かっこで囲んで、任意の部分文字列を返します。たとえば、LONを返すには、次のコマンドを使用します。

$ADDNSubstrings[1]

結果は、変数を除いた前のコマンドと同じです…

Splitメソッドを使用してPowerShellサブストリングを抽出する方法

PowerShell分割を使用してサブストリングの最後の要素を抽出する方法

サブストリングの最初または最後の要素(文字)を返したい場合は、最後の例と同じ原則を使用できます。

このトピックを研究している間、私はこれにつまずきました stackoverflow.com 糸。ユーザーには、以下に示す文字列があります。

0.3.1-15-g3b885c5
StackOverflowの質問は、文字列、 0.3.1-15-g3b885c5 意味 Tag-CommitDistance-CommitId 。したがって、0.3.1は 鬼ごっこ 、15は CommitDistance 、およびg3b885c5は CommitId 。

問題は、文字列の最初の部分である0.3.1を返すことです。このユーザーによると、 鬼ごっこ 。さらに、ユーザーは文字列の最後の部分であるg3b885c5を返したいと考えています。 CommitId 。

最初のステップは、文字列を変数に保存することです(これはオプションですが、一般的には作業が楽になります)。

$Tcc = '0.3.1-15-g3b885c5'

次に、 スプリット -を区切り文字として使用して、文字列をPowerShellサブ文字列に分割するメソッド。繰り返しになりますが、説明しやすいように、結果を別の変数に保存します…

$TccSubstrings = $Tcc.split('-')

最後のコマンドの結果を確認するには、 $ TccSubstrings 変数のみ。

$TccSubstrings

ここにあります…

roblox管理コマンドの使用方法

このセクションの前の例に基づいて、 鬼ごっこ (最初のサブストリング)、以下のコマンドを使用します。

$TccSubstrings[0]

最後に、抽出するには CommitId (最後のサブストリング)、以下のコマンドを使用してください…

$TccSubstrings[2]

そしてここに結果があります…

PowerShell分割を使用してサブストリングの最後の要素を抽出する方法

単一のコマンドを実行することによってもこの問題を解決できることに注意してください…

('0.3.1-15-g3b885c5'.split('-'))[0,2]

そして、これが同じ結果です…

これには魔法はありません。私がしたのは、すべてのコマンドを1つのコマンドに結合することだけでした。

PowerShell分割を使用して文字列を分割し、空のエントリを削除する方法

この最後の例では、空のスペース(またはエントリ)を持つ文字列をサブ文字列に分割する方法を示します。次に、最終結果の空のスペースを削除します。

別の stackoverflow.com スレッド、ユーザーは変数に保存されたこの文字列を投稿しました:

$text = 'Video Video Audio Audio VBI VBI'

次に、ユーザーは スプリット 方法 文字列を個々のサブ文字列に分割します。

$text.Split()

ユーザーによると(そしてこれは明らかです)、問題は結果にスペースがあることです。

この質問を投稿した人は、部分文字列からスペースを削除したいと考えていました。複数の解決策がありますが、1つの簡単な方法は、splitコマンドの出力をにパイプすることです。 Where-Object 。

これはの礼儀です ライナント 。これがコマンドです…

$text.Split() |  Where-Object  {$_ }

そしてここに結果があります…

これで、更新されたPowerShellサブストリングの記事です。お役に立てば幸いです。

この記事が役に立ったと思ったら、親切に投票してください はい この投稿は以下の役立つ質問でした。

または、このページの最後にある[返信を残す]フォームを使用して、質問したり、コメントを残したり、フィードバックを提供したりすることもできます。

最後に、PowerShell tech Sゾーンの詳細については、WindowsPowerShellハウツーガイドページにアクセスしてください。また、ホームページからの作業が非常に役立つ場合があります。

参考文献と参考資料

  1. スプリットについて
  2. String.Substringメソッド
  3. オペレーターについて
  4. メソッドについて
  5. String.Splitメソッド