ConvertFrom-String
Extrahuje a analyzuje strukturované vlastnosti z obsahu řetězce.
Syntaxe
ConvertFrom-String
[-Delimiter <String>]
[-PropertyNames <String[]>]
[-InputObject] <String>
[<CommonParameters>]
ConvertFrom-String
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[-InputObject] <String>
[<CommonParameters>]
Description
Rutina ConvertFrom-String extrahuje a parsuje strukturované vlastnosti z obsahu řetězce. Tato rutina vygeneruje objekt parsováním textu z tradičního textového streamu. Pro každý řetězec v kanálu rutina rozdělí vstup oddělovačem nebo parsovacím výrazem a potom přiřadí názvy vlastností každému výslednému rozděleném elementu. Tyto názvy vlastností můžete zadat; pokud ne, automaticky se vygenerují za vás.
Výchozí sada parametrů rutiny, ByDelimiter, rozdělí přesně na oddělovač regulárních výrazů. Neprovádí porovnávání uvozovek ani eskadér oddělovač, protože Import-Csv rutina.
Alternativní sada parametrů rutiny TemplateParsinggeneruje prvky ze skupin zachycených regulárním výrazem.
Tato rutina podporuje dva režimy: základní parsování s oddělovači a automaticky generované, například řízené analýzy.
Parsování s oddělovači ve výchozím nastavení rozdělí vstup na prázdné místo a přiřadí názvy vlastností výsledným skupinám. Oddělovač můžete přizpůsobit propojením ConvertFrom-String výsledků do jedné z rutin Format-* nebo můžete použít oddělovač parametru.
Tato rutina také podporuje automaticky generované ukázkové analýzy založené na FlashExtract, výzkumné práci společnosti Microsoft Research.
Příklady
Příklad 1: Vygenerování objektu s výchozími názvy vlastností
PS C:\> "Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
PS C:\>
Tento příkaz vygeneruje objekt s výchozími názvy vlastností, P1 a P2. Výsledky jsou P1="Hello" a P2="World".
Příklad 1A: Seznámení s vygenerovaným objektem
PS C:\> "Hello World" | ConvertFrom-String | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
P1 NoteProperty string P1=Hello
P2 NoteProperty string P2=World
PS C:\>
Příkaz vygeneruje jeden objekt s vlastnostmi P1, P2; obě vlastnosti mají ve výchozím nastavení typ string.
Příklad 2: Vygenerování objektu s výchozími názvy vlastností pomocí oddělovače
PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"
P1 P2
-- --
He o World
PS C:\>
Tento příkaz vygeneruje objekt s vlastnostmi P1="He" a P2="o World" zadáním "ll" v hello jako oddělovače.
Příklad 3: Vygenerování objektu, který obsahuje dvě pojmenované vlastnosti
PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord
FirstWord SecondWord
--------- ----------
Hello World
PS C:\>
Tento příkaz vygeneruje objekt, který obsahuje dvě vlastnosti:
- FirstWord s hodnotou "Hello"
- secondword, s hodnotou "World"
Příklad 4: Jako hodnotu parametru TemplateContent použijte výraz, uložte výsledky do proměnné.
$template = @'
{Name*:Phoebe Cat}, {phone:425-123-6789}, {age:6}
{Name*:Lucky Shot}, {phone:(206) 987-4321}, {age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
Write-output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
C:\ >
Tento příkaz používá výraz jako hodnotu parametru TemplateContent. Výraz je uložen v proměnné pro jednoduchost. Windows PowerShell teď chápe, že řetězec použitý v kanálu pro ConvertFrom-String má tři vlastnosti:
- názvu
- telefonní
- věku
Každý řádek ve vstupu se vyhodnocuje podle shody vzorku; pokud řádek odpovídá příkladům zadaným v modelu, hodnoty se extrahují a předají do definované výstupní proměnné.
Ukázková data, $template, poskytují dva různé formáty telefonu:
- 425-123-6789
- (206) 987-4321
A dva různé formáty věku:
- 6
- 12
To znamená, že telefony jako (206) 987 4321 nebudou rozpoznány, protože neexistují žádná ukázková data, která odpovídají tomuto vzoru (mezi třícifernou sekvencí a čtyřmístnou sekvencí neexistuje žádná spojovník). Podobně jako u 3 nebo více číslic věku se nerozpozná.
Příklad 5: Určení datových typů do vygenerovaných vlastností
$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData | Out-Null
Write-output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
C:\ >
Toto je stejný příklad jako číslo 4 výše; jedinými rozdíly jsou ve vzorovém řetězci, který obsahuje datový typ pro každou požadovanou vlastnost. Všimněte si rozdílu v zarovnání sloupce stáří mezi oběma příklady.
Příklad 5A: Seznámení s vygenerovaným objektem
$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
$PersonalData | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
age NoteProperty int age=6
Name NoteProperty string Name=Phoebe Cat
phone NoteProperty string phone=425-123-6789
C:\ >
Get-Member zobrazuje věk celočíselného typu.
Parametry
-Delimiter
Určuje regulární výraz, který identifikuje hranici mezi prvky. Prvky vytvořené rozdělením se stanou vlastnostmi ve výsledném objektu. Oddělovač se nakonec používá ve volání System.Text.RegularExpressions.RegularExpression.Split().
Typ: | String |
Aliasy: | DEL |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-IncludeExtent
Označuje, že tato rutina obsahuje vlastnost rozsahu textu, která je ve výchozím nastavení odebrána.
Typ: | SwitchParameter |
Aliasy: | IE |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-InputObject
Určuje řetězce přijaté z kanálu nebo proměnnou, která obsahuje objekt řetězce.
Typ: | String |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-PropertyNames
Určuje pole názvů vlastností, kterým se mají přiřadit rozdělené hodnoty ve výsledném objektu. Každý řádek textu, který rozdělíte nebo parsujete, generuje prvky, které představují hodnoty vlastností. Pokud je prvek výsledkem skupiny zachycení a tato skupina zachycení je pojmenovaná (například (?<name>)
nebo (?'name')
), pak je název této skupiny zachycení přiřazen k vlastnosti.
Pokud do pole Property Name zadáte nějaké prvky, přiřadí se tyto názvy vlastnostem, které ještě nebyly pojmenovány.
Pokud zadáte více názvů vlastností, než jsou pole, Windows PowerShell ignoruje názvy dalších vlastností. Pokud nezadáte dostatek názvů vlastností pro pojmenování všech polí, Windows PowerShell automaticky přiřadí číselné názvy vlastností všem vlastnostem, které nemají název: P1, P2 atd.
Typ: | String[] |
Aliasy: | PN |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-TemplateContent
Určuje výraz nebo výraz uložený jako proměnnou, který popisuje vlastnosti, kterým tato rutina přiřazuje řetězce. Syntaxe specifikace pole šablony je následující: {[optional-typecast]name(sequence-spec, například *):example-value}. Příkladem je {PersonInfo*:{Name:Patti Fuller}.
Typ: | String[] |
Aliasy: | TC |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-TemplateFile
Určuje soubor jako pole, který obsahuje šablonu pro požadovanou analýzu řetězce. V souboru šablony jsou vlastnosti a jejich hodnoty uzavřeny v hranatých závorkách, jak je znázorněno v následujícím příkladu. Pokud se vlastnost, jako je například vlastnost Název a její přidružené další vlastnosti, zobrazí několikrát, můžete přidat hvězdičku (*), která označuje, že výsledkem je více záznamů. Tím se zabrání extrahování více vlastností do jednoho záznamu.
{Name*:D avid Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Typ: | String[] |
Aliasy: | TF |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-UpdateTemplate
Označuje, že tato rutina ukládá výsledky algoritmu učení do komentáře v souboru šablony. Díky tomu je proces učení algoritmu rychlejší. Chcete-li použít tento parametr, musíte také zadat soubor šablony s parametrem TemplateFile.
Typ: | SwitchParameter |
Aliasy: | UT |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |