PowerShell验证CSV导入字符串:以S开头、8位、字母数字格式
优化后的实现方案
可以把三个校验条件整合到单个正则表达式中,同时简化代码结构:
$Sites = [System.Collections.Generic.HashSet[string]]::new() Import-Csv "O:\import.csv" | ForEach-Object { if ($_.Site -match '^S[a-zA-Z0-9]{7}$') { [void]$Sites.Add($_.Site) } }
正则表达式说明:
^S:强制字符串以字母S开头[a-zA-Z0-9]{7}:匹配恰好7个字母或数字(加上开头的S,总长度正好是8位)$:匹配字符串结尾,确保没有多余字符
进一步简化的管道式写法:
如果偏好更清晰的管道职责划分,也可以拆分过滤与添加步骤:
$Sites = [System.Collections.Generic.HashSet[string]]::new() Import-Csv "O:\import.csv" | Where-Object { $_.Site -match '^S[a-zA-Z0-9]{7}$' } | ForEach-Object { [void]$Sites.Add($_.Site) }
内容的提问来源于stack exchange,提问作者chrtak
相关产品推荐
相关产品推荐

