Первая попытка, не очень сложная:
gc .\tabfile.txt | % { ($_ -split "`t").Count - 1 }
Используя здесь тот факт, что, когда я разделю строку по символам табуляции, я получу массив с еще одним элементом, чем вкладок в строке.
Другой подход, избегающий разделения строк:
gc .\tabfile.txt | % { ([char[]] $_ -eq "`t").Count }
Строки могут быть приведены к char[]
(также существует метод ToCharArray()
), тогда я использую тот факт, что операторы сравнения работают по-разному в коллекциях, возвращая все соответствующие элементы вместо логического. Таким образом, сравнение возвращает массив, содержащий все вкладки из исходной строки, из которой мне просто нужно получить количество элементов.