作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个检查特定日期格式的读取主机。此外,目标是检查用户输入是否正确,如果不正确,则提示应再次弹出。
当我刚接触编程时,发现了这段代码,这似乎很合适。我仍然在努力“直到”
do
{
try {
[ValidatePattern("yyyyMMdd")]$Date = Read-Host -Prompt "Please input a valid date in format YYYYMMDD!"
} catch {}
} until ($?)
TBH,我不知道该怎么做($?)...我知道,直到需要将用户输入与有效模式“yyyyMMdd”进行比较,但我不知道该怎么做。
最佳答案
[ValidatePattern()]
属性不适合您的验证例程。
它以正则表达式模式作为参数,正则表达式仅涉及文本本身-它对日期格式一无所知,并且yyyyMMdd
对正则表达式引擎没有特殊含义-您基本上是在要求Powershell验证输入的是文字值“yyyyMMdd”。
您可能要为此使用 DateTime.TryParseExact()
:
$Date = [datetime]::MinValue
do
{
$DateStringInput = Read-Host -Prompt "Please input a valid date in format YYYYMMDD!"
} until ([datetime]::TryParseExact($DateStringInput.Trim(), 'yyyyMMdd', $null, 'None', [ref]$Date))
在循环内部,我们仅提示用户输入字符串,然后在
until
条件语句中,让
DateTime.TryParseExact()
解析给定指定格式的输入,并将其分配给
$Date
变量,以确保在失败时再次循环。
关于powershell - 做…直到-使用ValidPattern读取主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63580855/
我是一名优秀的程序员,十分优秀!