Ako extrahovať podreťazec PowerShell z reťazca

26. mája 2021 40320 Názory powershell-substring

V prostredí PowerShell je podreťazec súčasťou reťazca. Podreťazec prostredia PowerShell môžete vytvoriť z reťazca pomocou buď podreťazec g, rozdeliť metódy.





Príkladom reťazca je subdomena.domena.com . Podreťazce z subdomena.domena.comsubdoména , doména a s .



V tejto zóne S vás naučím všetko, čo sa potrebujete dozvedieť o podreťazci PowerShell.

Konkrétne sa naučíte, ako extrahovať podreťazce z reťazcov pomocou Podreťazec a Rozdeliť Metódy . Okrem toho sa dozviete o prostredí PowerShell Rozdeliť Operátor .



Nakoniec sa naučíte, ako rozdeliť reťazec PowerShell na podreťazce a použiť reťazec Podreťazec Metóda extrahovať podreťazce.



Prehľadávať témy príspevkov

Ako extrahovať podreťazec PowerShell pomocou Podreťazec Metóda

Ako extrahovať podreťazec PowerShell pomocou metódy podreťazca

V tejto prvej časti sa naučíte, ako extrahovať podreťazce z reťazca pomocou Podreťazec Metóda .



Som si vedomý toho, že používanie podreťazcov ako súčasti reťazca v tej istej vete ako Podreťazec Metóda môže byť mätúce. Kvôli prehľadnosti sa podreťazce ako súčasť reťazca týkajú extrakcie časti reťazca. Napríklad extrahovaním podreťazca usa z reťazca usa.itechguides.com. Naopak, Podreťazec Metóda odkazuje na PowerShell Podreťazec Metóda použité na vykonanie úlohy.

Nakopnem túto časť vysvetlením syntaxe súboru Podreťazec Metóda.



Syntax prostredia PowerShell Podreťazec Metóda

Syntax súboru Podreťazec metóda:

|_+_|

Aby ste sa uistili, že rozumiete zostávajúcim častiam tejto časti, je mimoriadne dôležité, aby ste venovali pozornosť môjmu vysvetleniu týchto syntaxí.

Ako môžete vidieť zo syntaxe, keď zadáte Podreťazec Metóda reťazca, zadáte startIndex A dĺžka .

The int v syntaxi označuje, že startIndex a dĺžka sú čísla (celé čísla)

The startIndex je prvý znak podreťazca, ktorý chcete extrahovať (počítajúc zľava doprava a začínajúc pridaním 1 k výsledku IndexOf – okrem prvého znaku).

Okrem toho, dĺžka je počet znakov, ktoré chcete extrahovať, začínajúc od 1 a počítajúc od prvého znaku podreťazca, ktorý chcete extrahovať.

V ďalšej časti vysvetlím IndexOf Metóda a ako ho použiť na určenie startIndex a dĺžka . Ak ste stále zmätení mojim pokusom vysvetliť tento pomerne zložitý koncept startIndex a dĺžka , nenechajte sa odradiť – postupom v príručke to bude jasnejšie.

Aby sme vám pomohli porozumieť tomuto konceptu, bude diskutovať nasledujúca časť IndexOf a LastIndexOf Metódy.

Ako identifikovať pozíciu podreťazca PowerShell pomocou IndexOf A LastIndexOf Metódy

Keď som vysvetlil syntax Podreťazec Metóda, povedal som, že startIndex prostredia PowerShell Podreťazec Metóda je prvý znak podreťazca, ktorý chcete extrahovať (určený pridaním 1 k výsledku IndexOf hodnota pre tento podreťazec).

V tejto časti použijem IndexOf a LastIndexOf Metódy reťazca PowerShell, ktorý vám ukáže, ako PowerShell určuje pozície znakov podreťazca v reťazci.

Na ilustráciu preskúmame pozíciu indexu prvého písmena u usa.itechguides.com - spustením príkazu nižšie...

|_+_| The IndexOf Metóda nájde prvý výskyt reťazca (počíta sa zľava doprava a začína od nuly)

Výsledok je nula (0)…

Prečo je to dôležité? Som rád, že si sa opýtal!

Pamätáte si na startIndex A dĺžka v syntaxi prostredia PowerShell Podreťazec Metóda ?

|_+_|

Ak je indexová pozícia písmena u v usa.itechguides.com je nula (o), podľa IndexOf Metóda – to znamená, že ak chceme extrahovať znaky začínajúce od písmena u, naše startIndex bude 0 – keďže ide o prvý znak v reťazci.

Výnimka z pravidla o pripočítaní 1 k výsledku IndexOf príkaz na určenie startIndex je prvý znak v reťazci. The startIndex prvého znaku reťazca bude vždy nula (0).

Aké úžasné!

Teraz k tomu pridajte ďalšiu vrstvu. Čo ak chceme nájsť posledný výskyt znaku v reťazci?

Namiesto použitia, IndexOf Metóda , budeme používať LastIndexOf Metóda . Tento príkaz určí umiestnenie posledného výskytu písmena u v reťazci, usa.itechguides.com :

|_+_| LastIndexOf nájde posledný výskyt reťazca (počítajúc zľava doprava a začínajúc od nuly)

Výsledkom je 10…

Ako identifikovať pozíciu podreťazca PowerShell pomocou metód IndexOf a LastIndexOfTieto znalosti o tom, ako PowerShell určuje polohu znakov podreťazca v reťazci, vám pomôžu manipulovať s reťazcami PowerShell – bez ohľadu na zložitosť.

Ako extrahovať podreťazec PowerShell vľavo od reťazca

V tejto časti sa dozviete, ako extrahovať podreťazec z ľavej časti reťazca. Ukážem vám príklad, ktorý sa dá použiť v produkčnom prostredí.

Za predpokladu, že spravujete doménu Active Directory s viacerými subdoménami. Subdomény sú pomenované pomocou 3-písmenového názvu krajiny. Príklady vašich subdomén sú USA.itechguides.com , jpn.itechguides.com .

Okrem toho predpokladajme, že píšete skript PowerShell, ktorý vyžaduje spustenie podmienených príkazov na základe názvu subdomény krajiny – v rámci vašej domény Active Directory.

V tejto časti vás naučím, ako extrahovať subdoménu POUŽITIE , od USA.itechguides.com .

Začnime uložením subdomény, POUŽITIE itechguides.com v premennej s názvom subdoména .

|_+_|

Pri extrakcii postupujte podľa nižšie uvedených krokov POUŽITIE , od USA.itechguides.com :

  1. Zadajte bodku (.) vedľa premennej, v ktorej je subdoména uložená, a za ňou slovo Podreťazec . Nakoniec pridajte otváraciu zátvorku…
|_+_| Po vstupe Podreťazec , môžete tiež stlačiť kláves Tab na klávesnici. Keď stlačíte kláves Tab, PowerShell pridá otváraciu zátvorku (.
  1. Ďalej zadajte startIndex za ktorou nasleduje čiarka (,). Predtým, ako to urobíte, nezabudnite, že chceme extrahovať USA. V tomto prípade, keďže chceme extrahovať z prvého znaku, náš startIndex je nula (0). Príkaz bude teraz vyzerať takto:
|_+_|
  1. Nakoniec zadajte dĺžka , za ktorým nasleduje uzatváracia zátvorka, ). V tomto príklade dĺžka (počítajúc od čísla vedľa startIndex ) je 3 – startIndex je 0, sčítanie 1 k 0 dáva 1.

    Ak počítate od U – USA má 3 znaky – takže dĺžka spolu 3 znaky.

    Tu je konečný scenár…
|_+_|

Ak chcete vidieť príkaz v akcii, spustite príkaz uvedený nižšie, najskôr...

|_+_|

Tým sa ušetrí reťazec, USA.itechguides.com v premennej PowerShell, $subdoména . Potom spustite príkaz, ktorý extrahuje podreťazec USA z reťazca, USA.itechguides.com .

|_+_|

Ako sa dalo očakávať, výsledkom sú USA!

kód chyby google 963

Čo ak chcete extrahovať nadradenú doménu, itechguides.com od USA.itechguides.com ? Aký bude náš startIndex a dĺžka ?

Na určenie vášho startIndex , najprv spustite IndexOf príkaz s použitím prvej bodky (.) ako vášho vstupu.

|_+_|

Výsledkom sú 3…

Ako extrahovať podreťazec PowerShell vľavo od reťazca

Podľa môjho predchádzajúceho vysvetlenia určiť startIndex z výsledku IndexOf príkaz, pridajte 1. Ak pridáme 1 k 3, náš startIndex je 4.

Ďalej na určenie dĺžka , začnite počítať od 1, začnite od prvého znaku reťazca, ktorý chcete extrahovať. Potom sa zastavte na poslednom znaku, ktorý chcete z reťazca extrahovať.

Pamätajte, že chceme extrahovať itechguides.com od USA.itechguides.com ?

Počítaním od prvého znaku reťazca, ktorý chceme extrahovať (i), začínajúc od 1, dĺžka je 15 ( itechguides.com má 15 znakov).

Na základe týchto hodnôt príkaz, ktorý extrahuje podreťazec PowerShell, itechguides.com od USA.itechguides.com je…

|_+_|

Tu je výsledok, itechguides.com !

Nakoniec, aby sme pomohli zjednodušiť tento dosť mätúci koncept startIndex , IndexOf a dĺžka , tu je zhrnutie:

  1. The startIndex prvého znaku reťazca PowerShell bude vždy nula (0)
  2. Na určenie startIndex podreťazca, pridajte 1 do IndexOf výsledok príkazu
  3. Nakoniec, dĺžka podreťazca PowerShell, ktorý chcete extrahovať, je celkový počet (začínajúci od 1) a počítaný od prvého znaku podreťazca po posledný znak podreťazca.

Ako extrahovať podreťazec PowerShell pred a po špecifikovanom znaku

V tejto časti vás naučím, ako extrahovať podreťazec PowerShell pred a za zadaným znakom.

Aby sme to ilustrovali, vráťme sa k našej subdoméne...

|_+_|

Povedzme, že chcem extrahovať podreťazec pred reklamou po prvej bodke (.). V skutočnosti chcem extrahovať USA (podreťazec pred zadaným znakom).

verizon s8 plus root

Okrem toho chcem extrahovať itechguides.com (podreťazec za zadaným znakom).

Prvým krokom je použitie IndexOf Metóda na určenie polohy referenčného znaku. Nasledujúci príkaz uloží pozíciu referenčného znaku do premennej s názvom refcharacter .

|_+_|

Ďalej použite podreťazec Metóda na extrahovanie podreťazca pred referenčným znakom.

|_+_|

Tu je výsledok…

Nakoniec použite nasledujúci PowerShell podreťazec Metóda na extrahovanie podreťazca za referenčným znakom

|_+_|

Ako sa očakávalo, výsledok extrahuje podreťazec za bodkou, ktorá je itechguides.com !

Ako extrahovať podreťazec PowerShell pred a po špecifikovanom znaku

Ako extrahovať podreťazec PowerShell medzi 2 znaky

V tejto časti vás naučím extrahovať itechguides od USA.itechguides.com . V tomto príklade chcem extrahovať podreťazec PowerShell medzi 2 znakmi.

Dva znaky v tomto príklade sú prvá a posledná bodka (.). Skript vyžaduje 3 príkazy.

V prvom príkaze použijeme IndexOf Metóda na určenie polohy prvého referenčného znaku (.). Potom uložte výsledok do premennej s názvom firstref .

|_+_|

Ďalej použijeme LastIndexOf Metóda na určenie polohy posledného referenčného znaku. Výsledok sa uloží do lastref premenlivý.

|_+_|

Nakoniec, ak chcete extrahovať podreťazec PowerShell, itechguides medzi 2 znakmi (bodkami), spustite príkaz nižšie...

|_+_|

V príkaze sme pridali 1 k výsledku IndexOf príkaz. V tomto príklade 3, čo dáva celkovo 4.

Toto robí naše startIndex Štyri.

Okrem toho v prostredí PowerShell podreťazec Metóda , použili sme dĺžka ako $lastref-4 .

Z našich predchádzajúcich príkazov, $lastref je premenná, ktorú sme uložili ako výsledok LastIndexOf príkaz.

Výsledok je 15. Odstránením 4 z 15 získame naše dĺžka jedenásť.

Výsledkom posledného príkazu je itechguides !

Ako extrahovať podreťazec PowerShell pomocou metódy rozdelenia

Ako extrahovať podreťazec PowerShell pomocou metódy rozdelenia

V prvej časti tejto príručky som diskutoval o tom, ako extrahovať podreťazec PowerShell pomocou Podreťazec Metóda . V tejto časti sa dozviete, ako extrahovať podreťazec PowerShell pomocou Rozdeliť Metóda .

Ako obvykle začnem túto časť syntaxou prostredia PowerShell Rozdeliť Metóda .

Syntax prostredia PowerShell Rozdeliť Metóda

Syntax súboru Rozdeliť Metóda na extrahovanie podreťazca PowerShell je:

|_+_|

Oddeľovač je ľubovoľný znak, ktorý chcete použiť na rozdelenie reťazca PowerShell na jednotlivé podreťazce.

Pozícia podreťazca umiestnená v zátvorke [] sa používa na výber konkrétneho podreťazca, ktorý chcete vrátiť z reťazcov.

Ako používať viacero oddeľovačov s PowerShell Split

Ako je vidieť v syntaxi prostredia PowerShell Rozdeliť Metóda , umožňuje len jeden oddeľovač. Ak však chcete rozdeliť podreťazce z reťazca s viacerými oddeľovačmi, musíte použiť PowerShell Rozdeliť Operátor namiesto toho.

Syntax prostredia PowerShell Rozdeliť Prevádzkovateľ je…

|_+_|

Ak chcete použiť viacero oddeľovačov, najprv uložte reťazec do premennej – v tomto príklade $string. Potom použite premennú automatického potrubia $_ na pridanie viacerých oddeľovačov, ako je uvedené nižšie:

|_+_|

Toto môžeme napríklad rozdeliť Rozlišujúci názov služby Active Directory , OU=LON,OU=DEV,DC=ITECHGUIDES,DC=COM – pomocou dvoch oddeľovačov, =, a ,.

Najprv si uložme DN do premennej s názvom $ADDN…

|_+_|

Potom na rozdelenie reťazca pomocou oddeľovačov = a , použite príkaz nižšie:

|_+_|

Bingo, posledný príkaz rozdelí reťazec na jednotlivé podreťazce PowerShell!

V ďalšej časti sa dozviete, ako vrátiť jeden z podstingov.

Ako extrahovať podreťazec PowerShell s Rozdeliť Metóda

V poslednej časti ste videli, ako rozdeliť reťazec na jednotlivé podreťazce pomocou prostredia PowerShell Rozdeliť Operátor . Tu je posledný príkaz…

|_+_|

Príkaz rozdelí reťazec na jednotlivé podreťazce.

Ako extrahovať podreťazec PowerShell pomocou metódy rozdelenia

Keď som diskutoval o syntaxi Rozdeliť Metóda na extrahovanie podreťazca PowerShell je, že som zahrnul zátvorku [], ktorá obsahuje polohu podreťazca, ktorý chcete vrátiť:

|_+_|

PowerShell čísluje pozície podreťazcov od nuly (0). Vráťme sa teda k príkladu DN služby Active Directory – pozri snímku obrazovky nižšie – prvý podreťazec OU je na pozícii nula (0), LON je na pozícii 1 atď.

Ako extrahovať podreťazec PowerShell pomocou metódy rozdelenia

Takže, aby sme vrátili LON, uzatvoríme posledný príkaz do zátvorky [1]. V tomto prípade, jeden je pozícia podreťazca, ktorú chceme vrátiť.

Tu je príkaz…

|_+_|

Tu je výsledok príkazu:

Prípadne môžete uložiť výsledok príkazu pomocou Rozdeliť Operátor do premennej.

|_+_|

Potom vráťte ktorýkoľvek z podreťazcov uzavretím pozície podreťazca do zátvorky []. Napríklad na návrat LON použijeme príkaz nižšie:

|_+_|

Výsledok je rovnaký ako predchádzajúci príkaz bez premennej…

Ako extrahovať podreťazec PowerShell pomocou metódy rozdelenia

Ako extrahovať posledný prvok podreťazca pomocou PowerShell Split

Ak chcete vrátiť prvý alebo posledný prvok (znak) podreťazca, môžete použiť rovnaký princíp ako v našom poslednom príklade.

Pri skúmaní tejto témy som narazil na toto stackoverflow.com vlákno. Používateľ má reťazec zobrazený nižšie:

|_+_| Otázka StackOverflow vysvetľuje, že reťazec, 0.3.1-15-g3b885c5 znamená Tag-CommitDistance-CommitId . Takže 0.3.1 je tag , 15 je CommitDistance a g3b885c5 je CommitId .

Otázkou je vrátiť prvú časť reťazca, 0.3.1 – podľa tohto používateľa tzv tag . Okrem toho chce používateľ vrátiť poslednú časť reťazca, g3b885c5, nazývanú CommitId .

Prvým krokom je uloženie reťazca do premennej (toto je voliteľné, ale vo všeobecnosti uľahčuje život).

|_+_|

Potom použite Rozdeliť Metóda na rozdelenie reťazca na podreťazce PowerShell pomocou - ako oddeľovača. Ešte raz, aby som to ľahko vysvetlil, uložím výsledok do inej premennej...

|_+_|

Ak chcete zobraziť výsledok posledného príkazu, spustite príkaz $TccSubstrings sama premenná.

|_+_|

Tu je…

Na základe našich predchádzajúcich príkladov v tejto časti extrahujte súbor Tag (prvý podreťazec), použite príkaz nižšie:

|_+_|

Nakoniec na extrahovanie CommitId (posledný podreťazec), použite príkaz nižšie...

|_+_|

A tu sú výsledky…

Ako extrahovať posledný prvok podreťazca pomocou PowerShell Split

Upozorňujeme, že tento problém môžete vyriešiť aj spustením jedného príkazu...

|_+_|

A tu je rovnaký výsledok…

t mobilná poznámka xda 4

Nie je v tom žiadna mágia, všetko, čo som urobil, bolo spojiť všetky príkazy do jedného príkazu!

Ako rozdeliť reťazec a odstrániť prázdne položky pomocou PowerShell Split

V tomto poslednom príklade vám chcem ukázať, ako rozdeliť reťazec s prázdnymi medzerami (alebo položkami) na podreťazce. Potom odstráňte prázdne miesta v konečnom výsledku.

V inom stackoverflow.com vlákno, používateľ uverejnil tento reťazec uložený v premennej:

|_+_|

Používateľ potom použil Rozdeliť Metóda na rozdelenie reťazca na jednotlivé podreťazce.

|_+_|

Podľa používateľa (a to je zrejmé) je problém v tom, že výsledok má medzery.

Osoba, ktorá uverejnila túto otázku, chcela, aby boli medzery z podreťazcov odstránené. Existuje viacero riešení, ale jedným rýchlym spôsobom je presmerovať výstup príkazu split na Kde-Objekt .

Toto je láskavosť Rynant . Tu je príkaz…

|_+_|

A tu je výsledok…

To je všetko, náš aktualizovaný článok podreťazca PowerShell! Dúfam, že vám to pomohlo.

Ak vám tento článok pomohol, zahlasujte Áno na otázku Bol tento príspevok užitočná nižšie.

Prípadne môžete položiť otázku, zanechať komentár alebo poskytnúť ďalšiu spätnú väzbu pomocou formulára Zanechať odpoveď, ktorý nájdete na konci tejto stránky.

Nakoniec, ak chcete získať viac zón PowerShell tech S, navštívte našu stránku sprievodcu Windows PowerShell ako na to. Veľmi užitočná vám môže byť aj naša stránka Práca z domovskej stránky.

Referencie a ďalšie čítanie

  1. O Splite
  2. String.Substring Method
  3. O operátoroch
  4. O metódach
  5. String.Split Method