Проверьте, содержит ли строка числовое значение в PowerShell?

Вопрос: Я хочу проверить, содержит ли строка числовое значение. У меня есть этот код: $string = "some string that contains 123456 in the middle" $substring = $string.substring(27,9).Trim() У меня есть подстрока $, которая будет содержать "123456", и я нашел эту функцию IsNumeric здесь: В PowerShell, как я могу проверить, содержит ли переменная числовое значение? Дело

Вопрос:

Я хочу проверить, содержит ли строка числовое значение. У меня есть этот код:

$string = «some string that contains 123456 in the middle» $substring = $string.substring(27,9).Trim()

У меня есть подстрока $, которая будет содержать “123456”, и я нашел эту функцию IsNumeric здесь: В PowerShell, как я могу проверить, содержит ли переменная числовое значение?

Дело в том, что это, когда я извлекаю его из $ string, он действует как строковый тип, а IsNumeric возвращает false, поскольку он сравнивает его со всеми числовыми типами. и даже жесткий он будет содержать номер, вывод IsNumeric будет ложным.

Есть ли лучший способ проверить, содержит ли строка числовые значения?

Лучший ответ:

Вы можете использовать совпадение регулярного выражения, чтобы проверить это:

if($substring -match «^d+$») { # Do something }

Это должно работать для любой строки, которая содержит только цифры (т.е. является положительным целым числом). Измените шаблон на ^-?d+$ если вы хотите включить отрицательные целые числа.

Ответ №1

Правильный способ проверить, может ли данная строка быть преобразована в число:

[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 }

то $OutNumber будет содержать число как числовой тип.

Ответ №2

В regexd – проверка цифр

d * проверяет 0 на бесконечные цифры

D? Проверяет от 0 до 1 цифры

d {0,5} проверяет от 0 до 5 цифр

d+ проверяет наличие от 1 до бесконечных цифр

^ – начало линии

$ – конец строки

Так

^d+ $ будет проверять на 1 или более цифр от начала до конца строки и только цифры. Любой другой символ разорвет соединение от начала до конца и не будет найден.

Ответ №3

использовать -match ‘ d’

string = «some string that contains 123456 in the middle» $substring = $string.substring(27,9).Trim() $substring -match ‘d’ Ответ №4

Традиционный способ использования платформы.NET:

if( [Microsoft.VisualBasic.Information]::IsNumeric($myString) ) { # do something }

Оцените статью
Добавить комментарий