HOWTO · PowerShell
如何從字串中提取 PowerShell 子字串
您可以在 Windows PowerShell 中從字串中提取子字串。
這篇文章說明了如何在 PowerShell 中從字符串中提取子字符串。子字符串只是字符串的一部分。
我們可以在 PowerShell 中使用 Substring() 和 split() 方法來創建子字符串。例如,假設我們有字符串 Delftstack.com,Delftstack 是一個子字符串,而 com 是另一個。
這篇文章將討論 Substring() 方法。
使用 Substring() 方法提取 PowerShell 子字符串
讓我們首先看一下 Substring() 方法的語法。
string.Substring(int startIndex, int length)
語法中的 int 標記 startIndex 和 length 為索引數字。startIndex 表示我們想提取的子字符串的第一個字符,而 length 是我們想從字符串中提取的字符數。
我們使用 IndexOf 方法來確定子字符串的 startIndex 和 length。
我們通過將 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,因為我們的 startIndex 是 0,而 length 是 3 個字符。如果我們的目標是從字符串中提取 delftstack 呢?
第一步是確定我們子字符串的 startIndex。在這種情況下,我們將使用第一個句點,即分隔符。
$ourstrng.IndexOf(".")
結果將是 3。但如果您能回想起來,我們將 1 加到字符串的第一個字符的結果上;因此,我們的 startIndex 將是 4。
長度將是我們希望子字符串擁有的字符數;我們將從 1 開始計數。子字符串 delftstack 有 10 個字符。
$ourstrng.Substring(4, 10)
這將返回 delftstack。
在指定字符之前和之後提取 PowerShell 子字符串
假設我們想從字符串中提取 ned 和 delftstack.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() 方法非常方便。