programing

Powershell: 문자열을 숫자로 변환

powerit 2023. 8. 16. 22:40
반응형

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

이 주제는 검증된 솔루션을 받은 적이 없기 때문에, 저는 당신이 솔루션을 요청한 두 가지 문제에 대한 간단한 솔루션을 제공할 수 있습니다.

  1. 값이 문자열인 경우 "." 문자 바꾸기

문자열 클래스는 업데이트할 문자열 개체에 대한 대체 메서드를 제공합니다.

예:

$myString = $myString.replace(".","") 
  1. 문자열 값을 정수로 변환

시스템.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

반응형