如何从powershell中的子字符串中获取数字

时间:2014-01-21 10:47:04

标签: powershell substring digits

我有一个字符串,其中包含持续时间(以毫秒为单位),我希望得到持续时间。

例如:

$a="Group policy waited for 904 milliseconds for the network subsystem at computer boot."

如何在上面的示例中获得“904”的持续时间?

3 个答案:

答案 0 :(得分:0)

一种方法是使用正则表达式提取值。以下工作在您的测试用例中,并使用值

填充毫秒变量
$ex = new-object System.Text.RegularExpressions.Regex('(\d+)(.milliseconds)', [System.Text.RegularExpressions.RegexOptions]::Singleline)
$a="Group policy waited for 904 milliseconds for the network subsystem at computer boot."
        foreach($match in $ex.Matches($a)){
        $milliseconds = $match.Groups[1]
        Write-Host $milliseconds
        }

进一步阅读here和一个好玩的地方是here

答案 1 :(得分:0)

这是一种方法。我在空格上分开并寻找数组中的第5项。

$a="Group policy waited for 904 milliseconds for the network subsystem at computer boot."
$mil = ($a -split " ")[4]
$mil += " milliseconds"
$mil

答案 2 :(得分:0)

我的输入字符串并不总是英文。它可以是其他语言,然后持续时间并不总是在字符串中的同一点。此外,由于字符串可以使用其他语言,因此子字符串“毫秒”可以根据语言进行更改。 可以肯定的是,在这个完整的字符串中,只有一个数值,这就是我想得到的。我发现了这种方式: $ a =“计算机启动时网络子系统的组策略等待904毫秒。” $ is_num_val = $ a -match'^。+([0-9] +)。+ $' $ num_val = $ matches [1]