检查每行的第一个字符以了解PowerShell中的特定值

检查每行的第一个字符以了解PowerShell中的特定值,powershell,char,character,Powershell,Char,Character,我正在阅读一个包含特定格式数字的文本文件。我想弄清楚这行的第一个字符是6还是4,然后将整行存储在一个数组中供以后使用。因此,如果该行以6开头,则将整行添加到sixArray中,如果该行以4开头,则将整行添加到fourArray中 我如何检查第一个字符,然后抓取该行上剩余的X个字符?不替换任何数据?如果是我,我就使用正则表达式 像这样的模式将捕获您需要的所有内容 `'^[4|6](?<Stuff>.*)$'` “^[4|6](?*)”` 类似的方法可能会奏效 $sixArray =

我正在阅读一个包含特定格式数字的文本文件。我想弄清楚这行的第一个字符是6还是4,然后将整行存储在一个数组中供以后使用。因此,如果该行以6开头,则将整行添加到sixArray中,如果该行以4开头,则将整行添加到fourArray中


我如何检查第一个字符,然后抓取该行上剩余的X个字符?不替换任何数据?

如果是我,我就使用正则表达式

像这样的模式将捕获您需要的所有内容

`'^[4|6](?<Stuff>.*)$'`
“^[4|6](?*)”`

类似的方法可能会奏效

$sixArray = @()
$fourArray = @()

$file = Get-Content .\ThisFile.txt
$file | foreach { 
    if ($_.StartsWith("6"))
    {
        $sixArray += $_
    }

    elseif($_.StartsWith("4"))
    {
        $fourArray += $_
    }
}
使用:

如果您正在运行V4:

$fourArray,$sixArray = 
((get-content $file) -match '^4|6').where({$_.startswith('4')},'Split')

没什么,我找不到关于只读第一个字符的任何东西。我有一个有效的比较语句,一旦我能够读取每行的第一个字符,我就可以使用它。请看字符串对象类型的Substring()方法的文档。我在字符串方法和正则表达式之间左右为难。最近我每次都在使用正则表达式。我不知道它是如何工作的,但它确实工作,而且很漂亮。@theMadTechnician这很漂亮,也很有效,但遗憾的是,它仅限于V4。我的大多数用户都将使用v2,其他发布的解决方案之一可能更合适。但如果您使用的是较新的版本,它确实是一个不错的解决方案:)。如果它是一个非常大的文件,我会选择ArrayList而不是arrays,但是StartString(0,1)比.SubString(0,1)-匹配“4”对我来说更快(12毫秒超过200个条目,但更快),但是
.StartString(“4”)
看起来比
更干净。
$fourArray,$sixArray = 
((get-content $file) -match '^4|6').where({$_.startswith('4')},'Split')