3-е задание на парсинг текста.
Потребуется файл Shot Put.txt из Competitors Pack.
Задача:
Решение:
Если внимательно посмотреть на файл, то в нём можно найти одну уникальную последовательность - `r`n`r`n. Она разделяет 2 абзаца. Поэтому эту последовательность можно использовать в качестве разделителя для Get-Content:
[↓] [vPodans] $file = gc '.\Shot Put.txt' -Delimiter "`r`n`r`n" [↓] [vPodans] $file[0] This is the first paragraph of the shot put text file. It will need to be placed into the first text file which you will create. The shot put is an event involving putting and heavy metal ball. The object of the event is to throw the put as far as possible, or to put the shot : anyway, you get the idea. [↓] [vPodans] $file[1] This is the second paragraph of the shot put text file. it contains information you will need to put into the second file which you will also create. [↓] [vPodans]
Если со вторым абзацем понятно, то у первого очень много пробелов и пустых строк. Их можно удалить при помощи метода Trim(), который использовался уже в Event1. Собственно, само решение:
$file = gc '.\Shot Put.txt' -Delimiter "`r`n`r`n" | %{$_.trim()} $file[0] > 'Shot Put A.txt' $file[1] > 'Shot Put B.txt' ren '.\Shot Put.txt' 'Shot Put.old'
потребуется файл Wordlist_ADV3.txt из Competitors Pack.
Задача:
Решение:
В принципе, тут есть только одно простое решение (считайте, что нагло стырено у Васи):
gc .\Wordlist_ADV3.txt | ?{$_ -replace '[^AEIOUY]' -match '^(.)\1*$'} > 'Wordlist_ADV3_new.txt'
суть решения заключается в том, чтобы из каждого слова убрать все согласные и проверить, что в слове используется только одна гласная 1 или более раз. Этот регексп описан в PowerShell Cookbook на странице 494.
Comments: