Powershell에서 문자열을 int로 변환하는 관용적인 방법은 무엇입니까?
제가 찾은 유일한 방법은 직접 캐스팅입니다.
> $numberAsString = "10"
> [int]$numberAsString
10
이것이 파워셸의 표준 접근법입니까?변환이 성공적인지 확인하기 위해 이전에 테스트를 수행할 것으로 예상됩니까? 그렇다면 어떻게 해야 합니까?
-as 연산자를 사용할 수 있습니다.캐스팅이 성공하면 다음과 같은 번호를 얻을 수 있습니다.
$numberAsString -as [int]
.net 사용
[int]$b = $null #used after as refence
$b
0
[int32]::TryParse($a , [ref]$b ) # test if is possible to cast and put parsed value in reference variable
True
$b
10
$b.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int32 System.ValueType
참고: (파워셸 강제 기능)
$a = "10"
$a + 1 #second value is evaluated as [string]
101
11 + $a # second value is evaluated as [int]
21
[int]에 캐스팅 여부에 대한 빠른 참/거짓 테스트
[bool]($var -as [int] -is [int])
나를 위해.$numberAsString -as [int]@Shay Levy가 가장 좋은 방법입니다, 저는 또한 사용합니다.[type]::Parse(...)또는[type]::TryParse(...)
그러나 필요한 것에 따라 산술 연산자의 오른쪽에 숫자를 포함하는 문자열을 배치하고 왼쪽에 int를 배치하면 결과는 Int32가 됩니다.
PS > $b = "10"
PS > $a = 0 + $b
PS > $a.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int32 System.ValueType
문제가 발생한 경우 예외(시도/ 구문 분석)를 사용하여 동작할 수 있습니다.
저는 아마 그런 일을 할 것입니다.
[int]::Parse("35")
하지만 저는 파워셸 사람이 아닙니다.시스템의 정적 구문 분석 방법을 사용합니다.Int32. 문자열을 구문 분석할 수 없는 경우 예외를 던져야 합니다.
$source = "number35"
$number=$null
$result = foreach ($_ in $source.ToCharArray()){$digit="0123456789".IndexOf($\_,0);if($digit -ne -1){$number +=$\_}}[int32]$number
숫자를 입력하기만 하면 다음으로 변환됩니다.Int32
Shavy Levy를 기반으로 한 답변:
[bool]($var -as [int])
$null은 false(bool)로 평가되기 때문에 이 문장은 캐스팅의 성공 여부에 따라 true 또는 false를 제공합니다.
언급URL : https://stackoverflow.com/questions/9700627/in-powershell-what-is-the-idiomatic-way-of-converting-a-string-to-an-int
'programing' 카테고리의 다른 글
| 클릭 시 jquery 내의 ajax 게시물 (0) | 2023.08.28 |
|---|---|
| ExecuteReader: 연결 속성이 초기화되지 않았습니다. (0) | 2023.08.28 |
| TypeVar와 NewType의 차이점은 무엇입니까? (0) | 2023.08.28 |
| Angular [사용 안 함]="MyBoolean"이 작동하지 않음 (0) | 2023.08.28 |
| 오늘 날짜에서 다음 달 날짜를 가져와서 데이터베이스에 삽입하려면 어떻게 해야 합니까? (0) | 2023.08.28 |