PowerShell检查整数和双精度浮点数类型

3

我需要用户填写一个整数,但是在下面的代码中,也允许输入小数。我该如何修改代码,只允许输入整数?

do{

    $opgegevenGetal = read-host "Enter an integer"

    if(![bool]($opgegevenGetal -as [int])){
        write-host "Only integers please"
    }

}

until ([bool]($opgegevenGetal -as [int]))
2个回答

6

尝试:

do{
    $opgegevenGetal = read-host "Enter an integer"
    $a = ""
    if(  ![int32]::TryParse( $opgegevenGetal , [ref]$a ))
      {
        write-host "Only integers please"
      }
  } until ($a -gt 0)

接受以 0 为输入的代码:

do{
    $opgegevenGetal = read-host "Enter an integer"
    $a = ""
    if(  ![int32]::TryParse( $opgegevenGetal , [ref]$a ))
      {
        write-host "Only integers please"
      }
  } until ($a -gt 0 -or $opgegevenGetal -eq '0')

或者:

do{
    $opgegevenGetal = read-host "Enter an integer"
    $a = ""
    $b = [int32]::TryParse( $opgegevenGetal , [ref]$a )
    if(  !$b)
      {
        write-host "Only integers please"
      }
  } until ($b)

@Tomzie 只是一个澄清:如果用户输入 0(因为 until 测试),循环不会退出。如果这是个问题,我会发布一个简单的解决方法。 - CB.
1
稍微更简洁的版本:$value = 0; $read = Read-Host '请输入一个整数'; while( ![int]::TryParse( $read, [ref]$value ) ) { $read = Read-Host '只能输入整数,请重新输入' } - Emperor XLII

6

这是一个更紧凑的版本,基于Christian的答案

$value = 0
$read = Read-Host 'Enter an integer'
while( ![int]::TryParse( $read, [ref]$value ) ) {
  $read = Read-Host 'Only integers please'
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接