一次从文本文件中读取一个字符

fud*_*dge 1 powershell

我正在尝试根据它们的类型转换文本文件中的字符:

信件> L

数字>#

有没有办法按字符迭代文件?我目前唯一可以使它工作的方法是嵌套循环遍历文件中的各个行.如果有一种更简单的方法,那就会减少很多代码,我不得不通过这些代码.

Joe*_*oey 7

  1. 您可以使用Get-Content -Encoding Byte字节值并将其转换回字符:

    Get-Content foo.txt -Encoding Byte | foreach { [char]$_ }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您可以使用Get-Content -Raw并将结果转换为[byte[]].不推荐用于大文件.

上面的两个选项都会为您提供所有字符,包括换行符.由于显而易见的原因,选项1不适用于Unicode; 选项2将.

然后有你提到的变体:迭代两次,一次一行一次,一次一个字符:

Get-Content foo.txt | foreach { [char[]] $_ | foreach { ... } }
Run Code Online (Sandbox Code Playgroud)

如果您不需要换行符作为字符,我更喜欢这个版本,因为它应该具有合理的运行时和内存要求(例如,它不会尝试将整个文件放入内存中).