arrays - 当您在数组中执行 custum 对象时跳过 line powershell
问题描述
如果 $array 中有某些单词(当前行),我想跳过 $array 中的一行
Get-Content -path $inDirFile | foreach{ # Read test.txt file and handle each line with foreach
$array += [PSCustomObject]@{
If ([string]::IsNullOrWhitespace($array) -Or $array -Match "=" -Or $array -Match "PAGE" -Or $array -Match "MENUITM" -Or $array -Match "----" -Or $array -Match "USER") {
continue
}
else{
Field1 = $_.substring(1,12).Trim();
Field2 = $_.substring(13,11).Trim();
Field3 = $_.substring(25,2).Trim();
Field4 = $_.substring(28,2).Trim();
Field5 = $_.substring(31,2).Trim();
Field6 = $_.substring(34,2).Trim();
Field7 = $_.substring(41); # Substring from index 41 to the end of line
}
}
}
解决方案
主要的代码问题是您不能将if
语句放在[PSCustomObject]
构造函数中。
您还尝试在使用 时比较以前的结果$array
,您应该使用$_
所有需要引用当前行的内容。
您还可以通过以下方式让生活更轻松:
- 构造正确的正则表达式而不是使用多个
-match
语句 - 否定 if 语句以避免使用
continue
“固定”代码如下所示:
$array = @()
Get-Content $inDirFile | Foreach-Object {
if (-not ( [string]::IsNullOrWhiteSpace($_) -or $_ -match "=|PAGE|MENUITM|----|USER" ) ){
$array += [PSCustomObject]@{
Field1 = $_.Substring(1, 3).Trim()
Field2 = $_.Substring(5, 3).Trim()
Field3 = $_.Substring(10,3).Trim()
}
}
}
推荐阅读
- java - 保存对象后外键为空
- php - Wordpress 发布自定义订单不起作用(显示但不保存)
- arduino - 如何将 Arduino IDE 草图加载到 RaspberryPi 3+ b?
- uwp - agora_rtc_sdk.dll的源代码在哪里
- typescript - Firebase 函数 tslint 错误 必须正确处理承诺
- c# - Dapper 查询结果在对象中将表的 Pk 设置为 null
- android - Android Studio 无法解析任何符号
- gcc - ARM 组件:.LANCHOR0
- pouchdb - 如何通知 PouchDB 来自网络工作者的更改?
- php - 缓存效果太好了