ConvertFrom-String
Extrahuje a analyzuje strukturované vlastnosti z obsahu řetězce.
Syntax
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 generuje objekt parsováním textu z tradičního textového streamu. Pro každý řetězec v kanálu rozdělí rutina vstup pomocí oddělovače nebo výrazu analýzy a pak přiřadí názvy vlastností každému výslednému rozdělení elementů. Můžete zadat tyto názvy vlastností. Pokud to neuděláte, vygenerují se automaticky.
Výchozí sada parametrů rutiny ByDelimiter se rozdělí přesně na oddělovač regulárních výrazů. Neprovádí porovnávání uvozovek nebo únik oddělovače jako rutina Import-Csv.
Alternativní sada parametrů rutiny TemplateParsing generuje prvky ze skupin, které jsou zachyceny regulárním výrazem.
Tato rutina podporuje dva režimy: základní analýzu s oddělovači a automaticky vygenerovanou ukázkovou parsování.
Analýza s oddělovači ve výchozím nastavení rozdělí vstup na prázdné znaky a výsledným skupinám přiřadí názvy vlastností. Oddělovač můžete přizpůsobit propojením výsledků ConvertFrom-String do jedné z rutin Format-* nebo můžete použít parametr Oddělovač .
Rutina také podporuje automaticky vygenerovanou ukázkovou analýzu založenou na výzkumné práci flashextract 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 jsou ve výchozím nastavení typu "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", a to tak, že jako oddělovač zadáte 'll' v Hello.
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: Použijte výraz jako hodnotu parametru TemplateContent a 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 se pro zjednodušení uloží do proměnné. Windows PowerShell teď chápe, že řetězec, který se používá v kanálu ConvertFrom-String, má tři vlastnosti:
- Název
- Telefon
- Věk
Každý řádek ve vstupu je vyhodnocen shodou vzorku; Pokud řádek odpovídá příkladům zadaným ve vzoru, 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é věkové formáty:
- 6
- 12
To znamená, že telefony jako (206) 987 4321 nebudou rozpoznány, protože neexistují žádná ukázková data, která by tomuto vzoru odpovídala (mezi třícifernou a čtyřmístnou sekvencí neexistuje pomlčka). Podobné stáří se 3 nebo více číslicemi nebudou rozpoznány.
Příklad 5: Zadání datových typů pro vygenerované vlastnosti
$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 výše uvedený bod č. 4; Jediné rozdíly jsou v řetězci vzoru, který obsahuje datový typ pro každou požadovanou vlastnost. Všimněte si rozdílu v zarovnání sloupce age 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žije ve volání System.Text.RegularExpressions.RegularExpression.Split().
Type: | String |
Aliases: | DEL |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeExtent
Označuje, že tato rutina obsahuje vlastnost text rozsahu, která je ve výchozím nastavení odebrána.
Type: | SwitchParameter |
Aliases: | IE |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Určuje řetězce přijaté z kanálu nebo proměnnou, která obsahuje objekt řetězce.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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, vygeneruje prvky, které představují hodnoty vlastností. Pokud je element výsledkem skupiny zachycení a tato skupina zachycení má název (například (?<name>)
nebo (?'name')
), pak se název této skupiny zachycení přiřadí vlastnosti.
Pokud v poli PropertyName 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ž je polí, Windows PowerShell nadbytečné názvy vlastností ignoruje. 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é nejsou pojmenované: P1, P2 atd.
Type: | String[] |
Aliases: | PN |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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}.
Type: | String[] |
Aliases: | TC |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 Name a její přidružené další vlastnosti, zobrazí vícekrá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 vid Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Type: | String[] |
Aliases: | TF |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UpdateTemplate
Označuje, že tato rutina ukládá výsledky algoritmu učení do komentáře v souboru šablony. Proces učení algoritmu tak bude rychlejší. Chcete-li použít tento parametr, musíte také zadat soubor šablony s parametrem TemplateFile .
Type: | SwitchParameter |
Aliases: | UT |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |