如何從字串中提取 PowerShell 子字串

  1. 使用 Substring() 方法提取 PowerShell 子字符串
  2. 在字符串的左側提取 PowerShell 子字符串
  3. 在指定字符之前和之後提取 PowerShell 子字符串
  4. 提取兩個字符之間的 PowerShell 子字符串
如何從字串中提取 PowerShell 子字串

這篇文章說明了如何在 PowerShell 中從字符串中提取子字符串。子字符串只是字符串的一部分。

我們可以在 PowerShell 中使用 Substring()split() 方法來創建子字符串。例如,假設我們有字符串 Delftstack.comDelftstack 是一個子字符串,而 com 是另一個。

這篇文章將討論 Substring() 方法。

使用 Substring() 方法提取 PowerShell 子字符串

讓我們首先看一下 Substring() 方法的語法。

string.Substring(int startIndex, int length)

語法中的 int 標記 startIndexlength 為索引數字。startIndex 表示我們想提取的子字符串的第一個字符,而 length 是我們想從字符串中提取的字符數。

我們使用 IndexOf 方法來確定子字符串的 startIndexlength

我們通過將 1 加到 IndexOf 子字符串的結果值來確定 startIndex。讓我們看一個例子。

假設 ned.delftstack.com 是我們的字符串,字母 n 在我們的字符串中的索引位置是什麼?我們可以通過運行下面的命令來確定位置:

"ned.delftstack.com".IndexOf('n')

結果是 0。這是因為 IndexOf 方法從左到右搜索字符串的第一次出現,並且總是從 0 開始。

因此,如果我們希望從字母 n 開始提取子字符串,我們的 startIndex 將是 0。

我們還可以使用 LastIndexOf 來找到字符串最後一次出現的位置。例如,字母 d 的最後一次出現將是:

"ned.delftstack.com".LastIndexOf('d')

這些基本信息將使您能夠在 PowerShell 中操作字符串。

在字符串的左側提取 PowerShell 子字符串

讓我們讓上述信息發揮作用。

假設我們想從 ned.delftstack.com 中提取子字符串 ned。我們該如何進行?

我們將首先將字符串儲存在名為 ourstrng 的變量中。

$ourstrng = "ned.delftstack.com"

根據 Substring() 方法的語法,我們的命令將是:

$ourstrng.Substring(0, 3)

這將返回 ned,因為我們的 startIndex0,而 length 是 3 個字符。如果我們的目標是從字符串中提取 delftstack 呢?

第一步是確定我們子字符串的 startIndex。在這種情況下,我們將使用第一個句點,即分隔符。

$ourstrng.IndexOf(".")

結果將是 3。但如果您能回想起來,我們將 1 加到字符串的第一個字符的結果上;因此,我們的 startIndex 將是 4

長度將是我們希望子字符串擁有的字符數;我們將從 1 開始計數。子字符串 delftstack10 個字符。

$ourstrng.Substring(4, 10)

這將返回 delftstack

在指定字符之前和之後提取 PowerShell 子字符串

假設我們想從字符串中提取 neddelftstack.com。我們該如何進行?

首先,我們需要確定我們的分隔符的位置,即第一個 .。下面的命令將把分隔符儲存在名為 $sepchar 的變量中。

$sepchar = $ourstrng.IndexOf(".")

為了提取我們的子字符串,我們將運行以下命令:

$ourstrng.Substring(0, $sepchar)

這將提取第一部分,即 ned。對於另一個子字符串,我們將運行:

$ourstrng.Substring($sepchar + 1)

這將返回 deftstack.com

提取兩個字符之間的 PowerShell 子字符串

如果我們的字符串是 ned.delftstack.com,那麼我們的子字符串將是 delftstack,因為它位於我們的第一個和第二個句點之間。這種腳本將需要三個命令。

第一個命令將確定我們第一個句點 (.) 的位置並將其儲存在變量 firstsep 中。

$firstsep = $ourstrng.IndexOf(".")

第二個命令將使用 LastIndexOf 方法確定我們的第二個句點的位置並將其儲存在變量 lastrep 中。

$lastrep = $ourstrng.LastIndexOf(".")

最後一個命令將從我們的字符串中提取子字符串 delftstack

$ourstrng.Substring($firstsep + 1, $lastrep - 4)

總結來說,您可以在字符串中提取子字符串,在 PowerShell 分隔符之前、之後以及之間。正如我們上面所見,Substring() 方法非常方便。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

相關文章 - PowerShell String