Я пытаюсь преобразовать строку в целое число с помощью PowerShell. Тем не менее, он продолжает говорить мне, что у меня нет действительного номера, хотя я уверен, что у меня есть.
Прежде всего, вот как я получаю свою переменную, а также распечатку типа и т. Д., Просто для обеспечения достоверности:
$obj = (New-Object -TypeName PSCustomObject -Property @{
LastSaved = $com.GetDetailsOf($_, 155).toString().trim()
})
Write-Host $obj.LastSaved
$datePart,$b,$c = $obj.LastSaved.Split(" ")
Write-Host $datePart
$intVar,$b,$c = $datePart.Split("/")
$intVar = $intVar.Trim()
$intVar -replace '\W', ''
Write-Host $intVar
Write-Host $intVar.GetType()
Выход:
5/26/2016 8:09
5/26/2016
5
System.String
Вот первый метод, который я пытался преобразовать:
[int]$converted = 0
[int]::TryParse($intVar, [ref]$converted)
Write-Host $converted
А на выходе:
Ложная
0
Следующий метод:
$converted = [convert]::ToInt32($intVar, 10)
И результат:
Исключительная ситуация, вызывающая "ToInt32" с аргументом (ами) "2": "Не удалось найти какие-либо распознаваемые цифры."
И третий метод, который я пробовал:
$converted = $intVar / 1
И результат:
Невозможно преобразовать значение "5" в тип "System.Int32". Ошибка: «Входная строка была в неправильном формате.»
Если я вручную присваиваю $intVar
значение «5» ($intVar = "5"
), все работает просто отлично, поэтому я думаю, что должна быть проблема с тем, как я получаю значение. Но я понятия не имею, что могу делать неправильно, поскольку GetType()
говорит, что это действительно строка.
РЕДАКТИРОВАТЬ: В ответ TobyU я также пытался $intVar = [int]$intVar
, с тем же результатом
Невозможно преобразовать значение "5" в тип "System.Int32". Ошибка: «Входная строка была в неправильном формате.»
РЕДАКТИРОВАТЬ: Еще один метод:
$intVar = [int]::Parse($intVar)
Что дает:
Исключение вызывает "Parse" с аргументом (ами) "1": "Входная строка была в неправильном формате."
РЕДАКТИРОВАТЬ 3: Таким образом, как упоминалось в некоторых комментариях, есть недопустимые символы. Вот вывод Format-Hex
:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 3F 32 36 ?26