Powershell: 문자열을 숫자로 변환
WMI의 일부 드라이브 데이터가 캡처되는 어레이가 있습니다.
$drivedata = $Drives | select @{Name="Kapazität(GB)";Expression={$_.Kapazität}}
어레이의 값은 다음과 같습니다(드라이브 2개).
@{Kapazität(GB)=1.500} @{Kapazität(GB)=1.500}
그리고 1.500을 1500이라는 숫자로 변환하고 싶습니다.
여기서 찾은 여러 가지 제안을 시도했지만 제대로 작동하지 않았습니다.
-Replace ".","" and [int]
작동하지 않습니다.regex가 맞는지, 어떻게 하는지 잘 모르겠습니다.
단순히 끈을 하나의 끈으로 캐스팅하는 것.int
안정적으로 작동하지 않을 것입니다.당신은 그것을 그것을 변환해야 합니다.int32
이를 위해 .NET을 사용할 수 있습니다.convert
계급과 그 계급ToInt32
방법.이 메서드에는 다음이 필요합니다.string
($strNum
) 주 입력으로, 그리고base number
(10
)을 입력합니다.이는 십진법으로만 변환할 수 없기 때문입니다.10
예를 들어 이진 시스템(기본 2)에도 적용됩니다.
이 방법을 사용해 보십시오.
[string]$strNum = "1.500"
[int]$intNum = [convert]::ToInt32($strNum, 10)
$intNum
숫자를 문자열로 포함하는 변수를 1로 나누기만 하면 됩니다.PowerShell은 결과를 자동으로 정수로 변환합니다.
$a = 15, $b = 2, $a + $b --> 152
하지만 그 전에 나누면,
$a/1 + $b/1 --> 17
이 주제는 검증된 솔루션을 받은 적이 없기 때문에, 저는 당신이 솔루션을 요청한 두 가지 문제에 대한 간단한 솔루션을 제공할 수 있습니다.
- 값이 문자열인 경우 "." 문자 바꾸기
문자열 클래스는 업데이트할 문자열 개체에 대한 대체 메서드를 제공합니다.
예:
$myString = $myString.replace(".","")
- 문자열 값을 정수로 변환
시스템.int32 클래스(또는 powershell에서 단순히 [int])는 문자열이 정수인지 여부를 나타내는 부울을 다시 전달할 뿐만 아니라 true를 반환하는 경우 참조에 의해 정수 값을 기존 변수로 반환하는 "TryParse"라는 메서드를 사용할 수 있습니다.
예:
[string]$convertedInt = "1500"
[int]$returnedInt = 0
[bool]$result = [int]::TryParse($convertedInt, [ref]$returnedInt)
이것이 당신이 질문에서 처음 제기한 문제를 해결하기를 바랍니다.
"-484876800000"과 같은 문자열을 수신하는 방법을 시연하고 문자열을 구문 분석하여 긴 문자열에 할당할 수 있는지 확인합니다.범용 시간에서 날짜를 계산하고 문자열을 반환합니다.문자열을 숫자로 변환할 때는 숫자 유형과 정밀도를 결정하고 문자열 데이터를 구문 분석할 수 있는지 테스트해야 합니다. 그렇지 않으면 데이터가 느려지고 오류가 발생합니다.
function universalToDate
{
param (
$paramValue
)
$retVal=""
if ($paramValue)
{
$epoch=[datetime]'1/1/1970'
[long]$returnedLong = 0
[bool]$result = [long]::TryParse($paramValue,[ref]$returnedLong)
if ($result -eq 1)
{
$val=$returnedLong/1000.0
$retVal=$epoch.AddSeconds($val).ToString("yyyy-MM-dd")
}
}
else
{
$retVal=$null
}
return($retVal)
}
문자열의 숫자를 제외한 모든 숫자를 다음과 같이 바꿉니다.
$messyString = "Get the integer from this string: -1.500 !!"
[int]$myInt = $messyString -replace '\D', ''
$myInt
# PS > 1500
\D
숫자를 제외한 모든 항목과 일치하고 문자열에서 제거합니다.
이것은 당신의 예에서 잘 작동할 것입니다.
문제는 "-f($.)"에 있는 것 같습니다.칸막이.크기/1GB)}" 값(MB)을 원하는 경우 1GB를 1MB로 변경합니다.
언급URL : https://stackoverflow.com/questions/25322636/powershell-convert-string-to-number
'programing' 카테고리의 다른 글
Read-Host와 함께 기본값을 사용할 수 있는 단일 라이너가 있습니까? (0) | 2023.08.16 |
---|---|
"Too many revision" git 메시지 (0) | 2023.08.16 |
Angular CLI에서 상대 경로 방지 (0) | 2023.08.16 |
C에서 %f와 %lf의 차이는 무엇입니까? (0) | 2023.08.16 |
아이폰에서 투명한 PNG 이미지를 염색하는 방법은 무엇입니까? (0) | 2023.08.16 |