A common scenario in an admin’s world is to figure out a way to find a certain snippet of text inside a string; called the substring. PowerShell makes finding a substring extremely easy.
Correlato: Impara il formato delle stringhe e l’espansione delle stringhe
Annuncio di un training LIVE gratuito – Inizia il tuo percorso con PowerShell – presentato da Johan Arwidmark. Comprendi come le competenze di PowerShell migliorano la tua carriera IT, impara da dove iniziare con PowerShell, costruisci i tuoi primi script e fai domande direttamente a Johan in un ambiente di formazione dal vivo.
PowerShell e Stringhe
Nel mondo di PowerShell, una stringa consiste in un insieme di caratteri racchiusi tra virgolette singole o doppie. Stringhe come "foo"
e 'bar'
sono estremamente comuni.
Correlato: Ritorno alle basi: Stringhe di PowerShell
Supponiamo di aver definito una stringa in una variabile e di aver bisogno solo di trovarne una parte? Ad esempio, diciamo che hai una stringa con un indirizzo come 1234 4th St. Vorresti estrarre il numero e sai che i primi quattro caratteri saranno sempre il numero di cui hai bisogno. In questo caso, puoi utilizzare il metodo substring()
di PowerShell.
Utilizzo del Metodo SubString di PowerShell
Per trovare una stringa all’interno di una stringa con PowerShell, puoi utilizzare il metodo Substring()
. Questo metodo si trova su ogni oggetto stringa in PowerShell.
Ad esempio, forse hai una stringa come La volpe marrone veloce saltò oltre la recinzione.
. Vorresti trovare i primi cinque caratteri. Potresti farlo usando il metodo Substring()
così:
Il primo argomento da passare al metodo Substring()
è la posizione del carattere più a sinistra. In questo caso, il carattere più a sinistra è T
. Il secondo argomento è la posizione del carattere più a destra. In questo caso, il carattere è q
.
Il metodo Substring()
restituisce tutti i caratteri tra di essi.
Ecco un esempio del mondo reale:
Diciamo che abbiamo un codice prodotto che ha il seguente formato: XXXXVVVV-MM-DD-YYYY
. Tutti i prodotti hanno questo formato di codice e non si discostano mai da esso. Ora diciamo che il software di gestione dell’inventario che ha generato questo codice non includeva un campo data creazione nel database.
Tuttavia, il software ha sempre inserito questa data come MM-DD-YYYY
nel codice prodotto stesso, quindi possiamo inferirlo dal codice prodotto. Abbiamo bisogno di ottenere questa data per i nostri prodotti per creare un rapporto super-fancy ma estremamente non necessario alla gestione per mostrare quando ogni prodotto è stato inserito nel database. Ecco un buon modo per farlo.
In questo esempio, stiamo utilizzando il metodo PowerShell SubString()
per l’oggetto stringa intrinseco e passando il numero per il primo carattere che vogliamo trovare come parametro.
Poiché non stiamo specificando il carattere di arresto, si presume che vogliamo tutti i caratteri fino alla fine della stringa. Per trovare il numero in primo luogo, stiamo ottenendo innanzitutto la lunghezza dell’intero codice prodotto e semplicemente sottraendo 10 da quello. In questo esempio, ciò significa che vogliamo iniziare dal 10° carattere dalla destra della stringa e tutto a destra di quello.
Il tipo [DateTime]
non necessariamente si abbina all’argomento della sottostringa del post, ma ho pensato che si adattasse bene con l’esempio specifico.
Dopo aver ottenuto la nostra stringa del 11-12-2013, la convertiamo in un oggetto [DateTime]
che trasforma ciò che era una semplice stringa in un bel oggetto. Da qui, possiamo fare tutti i calcoli di data di cui abbiamo bisogno e generare quel bel rapporto a grafico a barre!
Trovare dinamicamente una sottostringa usando la proprietà di lunghezza
Nell’esempio precedente, definivi staticamente le posizioni di inizio e fine dei caratteri all’interno della stringa. Ma cosa succede se non conosci l’ultima posizione?
Forse devi trovare la sottostringa degli ultimi quattro caratteri. Devi trovare il set di caratteri dal quarto all’ultima posizione fino alla fine. La stringa in cui stai cercando potrebbe avere una qualsiasi lunghezza.
Invece di definire la posizione di fine come un numero positivo che conta da sinistra, possiamo specificare dinamicamente la posizione di fine utilizzando la lunghezza della stringa e sottraendo un certo numero di caratteri da essa.
Usando la stringa sopra `$product_code = ‘ABCD1234-11-12-2013’`, forse vuoi trovare gli ultimi quattro caratteri. Invece di fare qualcosa del genere:
Puoi sostituire `0` con `$product_code.Length – 4` e non usare affatto la posizione finale e restituirà comunque gli ultimi quattro caratteri come mostrato di seguito.
Se non specifici la posizione finale, il metodo di sottostringa di PowerShell utilizzerà sempre per impostazione predefinita l’ultima posizione del carattere.
Utilizzando la proprietà `length` della stringa, che è il numero totale di caratteri nella stringa e sottraendo da quel conteggio, ti consente di selezionare dinamicamente sottostringhe.
Annuncio di un Training LIVE gratuito – Inizia il tuo percorso con PowerShell – presentato da Johan Arwidmark. Capisci come le competenze di PowerShell migliorano la tua carriera IT, impara da dove iniziare con PowerShell, crea i tuoi primi script e fai domande direttamente a Johan in un ambiente di formazione dal vivo.