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

Vstupy

String