У меня есть данные в структуре текста с отступом вдоль строк:
"Тема"
\ т "Категория"
\ т \ т "подкатегорий"
e.g. for two records I would have
"Planet of the Apes"
\t"Scifi"
\t\t"Movie"
\t\t"TV series"
\t"Popular"
\t\t"Remake"
\t\t"Cult Classic"
BBC News
\t"Topical"
\t\t"Daily News"
\t"Geographical"
\t\t"UK"
\t\t"England"
ITV News
\t"Topical"
\t\t"Daily News"
\t\t"UK"
\t"Geographical"
\t\t"UK"
\t\t"England"
(прошу прощения, из-за автоматического форматирования в Stackoverflow иллюстрированное форматирование, табуляция или пробел делаются несколько сложнее!
Я пытаюсь найти лучший способ преобразовать это во что-то, с чем я могу работать, чтобы фильтровать и сортировать. Поскольку данные в настоящее время представляют собой простой текст, у меня есть оператор if, который работает, если это Subject, Category или Subcategory, но какой самый разумный способ создать хеш-таблицу из таких данных?
$processedData = @{}
$versionattribs | ForEach-Object{
if($_ -match "^\s*$" -or $_ -match "Inherits.*")
{
# Is a blank line
}
elseif($_ -notmatch "`t")
{
# Is a Subject
Write-Host "Subject: $_ "
$Subject = $_
}
elseif($_ -match "`t" -and $_ -notmatch "`t`t")
{
# Is a category
Write-host "Category: $_"
$category = $_
}
elseif($_ -match "`t`t")
{
# Is a sub-category label
Write-Host "Label: $_ "
$label = $_
}
else
{
#Unexpected attribute
Write-host "Error - unexpected line indentation : $_"
}
}