Century10. Underthewire.tech прохождение - PullRequest
0 голосов
/ 17 октября 2019

Пароль для Century10 - это 161-е слово в файле на рабочем столе.

ПРИМЕЧАНИЕ: - Пароль будет строчным, независимо от его вида на экране.

* Вопрос выше, где я сталкиваюсь со своими проблемами. Я попробовал команду ниже. *

Get-Content C:\Users\Century9\Desktop\Word_File.txt | Select-Object -Index 161

Результат был ноль. Я понимаю, что мне нужно присвоить значение строке, поскольку теперь она рассматривается как единое целое. Но как мне это сделать?

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Если маркер интереса - 161-е слово в файле , используйте следующий подход, при котором разбивает файл на слова независимо от переносов строк [1] :

$pass = (-split (Get-Content -Raw Word_File.txt))[160]

Добавить .ToLower(), если вы хотите преобразовать токен в строчные буквы.

Обратите внимание, что вышезагружает весь файл в память как одну строку, используя -Raw.

  • Поскольку индексы массива основаны на 0, индекс [160] возвращает 161-й элемент.

  • Унарная форма оператора -split разбивает входные данные в массив токенов по пробелам .

    • Примечание. Если вы хотите разделить по более строгому определению, что составляет слово в контексте регулярного выражения, используйте вместо этого следующее:
$pass = ((Get-Content -Raw Word_File.txt) -split '\W+' -ne '')[160]

[1] Если ваш входной файл содержит каждое слово в отдельной строке :

Ваше решение было правильнымrack, за исключением того, что вы должны передать 160 в Select-Object -Index, так как параметр -Index ожидает индексы 0 , а не 1 номера строк :

# Extract the 161st line.
$pass = Get-Content Word_File.txt | Select-Object -Index 160

Чтобы преобразовать в нижний регистр:

$pass = (Get-Content Word_File.txt | Select-Object -Index 160).ToLower()

Выше будет сбой , если во входном файле будет меньше , чем 161 строка (ссообщение об ошибке You cannot call a method on a null-valued expression).

Если вы предпочитаете спокойно получать без вывода , используйте следующее (в котором используются встроенные псевдонимы select для Select-Object и foreachдля ForEach-Object для краткости):

$pass = Get-Content Word_File.txt | select -Index 160 | foreach ToLower
0 голосов
/ 17 октября 2019

Попробуйте запустить это:

((Get-Content -Path C:\Users\Century9\Desktop\Word_File.txt -TotalCount 161)[-1]).ToLower()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...