fumingxia 发表于 2018-9-2 09:14:20

PowerShell 字符串的几种类型判断

Function IsBlank ($InputObject) {  
if (($InputObject -eq "") -or ($InputObject -eq $Null)) {
  
    Return $True
  
} else {
  
    Return $False
  
}
  
}
  

  
Function IsInteger ($InputObject) {
  
if ($InputObject -match "^\d+$" ) {
  
    Return $True
  
} else {
  
    Return $False
  
}
  
}
  

  
Function IsFloat ($InputObject) {
  
if ($InputObject -match "^\d+\.\d+$") {
  
    Return $True
  
} else {
  
    Return $False
  
}
  
}
  

  
Function IsIPAddr ($InputObject) {
  
if ($InputObject -match "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$") {
  
    Foreach ($Local:str in $InputObject.split(".")) {
  
      if (($str -gt 255) -or (($str -match "^0") -and ($str -ne "0"))) {
  
      #IP任意一段大于255或(以0开头但不等于0)则无效
  
      Return $False
  
      }
  
    }
  
    if ( $InputObject.split(".") -eq 0 ) {
  
      #IP首位等于0则无效
  
      Return $False
  
    }
  
      Return $True
  
} else {
  
    #IP不符合四段3位数值格式则无效
  
    Return $False
  
}
  
}
  

  

  
Function IsNetmask($InputObject) {
  
if ($InputObject -match "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$") {
  
    #将子网掩码转换为二进制字符串,不足8位的在左侧填0
  
    $Mask = -join ($InputObject.Split('.') | ForEach-Object {::ToString($_,2).PadLeft(8,'0')})
  
    #判断是否连续1开头,连续0结尾
  
    if (($Mask -match '^1+0+$') -and ($Mask.Length -le 32)) {
  
      Return $True
  
    } else {
  
      Return $False
  
    }
  
} else {
  
    Return $False #不符合IP的四段3位数字格式
  
}
  
}


页: [1]
查看完整版本: PowerShell 字符串的几种类型判断