Mar*_*One 2 powershell numeric
我想检查一个字符串是否包含数值.我有这个代码:
$string = "some string that contains 123456 in the middle"
$substring = $string.substring(27,9).Trim()
Run Code Online (Sandbox Code Playgroud)
我有$ substring,它将包含"123456",我在这里找到了这个IsNumeric函数: 在PowerShell中,如何测试变量是否包含数值?
问题是,当我从$ string中提取它时,它就像字符串类型一样,并且IsNumeric返回false,因为它将它与所有数字类型进行比较.甚至强硬它将包含一个数字,IsNumeric的输出将是假的.
有没有更好的方法来检查字符串是否包含数值?
检查给定字符串是否可以变成数字的正确方法:
[string]$InString = "123456"
[Int32]$OutNumber = $null
if ([Int32]::TryParse($InString,[ref]$OutNumber)){
Write-Host "Valid Number"
$OutNumber
} else {
Write-Host "Invalid Number"
#error code here
}
Run Code Online (Sandbox Code Playgroud)
然后$OutNumber将包含数字作为数字类型。
您可以使用正则表达式匹配来测试它:
if($substring -match "^\d+$")
{
# Do something
}
Run Code Online (Sandbox Code Playgroud)
这适用于任何只包含数字的字符串(即整数).
在正则表达式中 \d 是对数字的检查
\d* 检查 0 到无限位数
\d? 检查 0 到 1 位数字
\d{0,5} 检查 0 到 5 位数字
\d+ 检查 1 到无限位数字
^ 是一行的开始
$ 是一行的结尾
所以
^\d+$ 将检查从行首到行尾的 1 个或多个数字,并且仅检查数字。任何其他符号都会从头到尾断开连接并且找不到。
| 归档时间: |
|
| 查看次数: |
5416 次 |
| 最近记录: |