Successivo: Funzione getlocaltime, Precedente: Funzioni ordinali, Su: Funzioni di tipo generale [Contenuti][Indice]
Quando si fanno elaborazioni su stringhe, spesso è utile poter unire
tutte le stringhe di un vettore in una lunga stringa. La funzione seguente,
join()
, svolge questo compito. Verrà utilizzata nel seguito in diversi
programmi applicativi
(vedi la sezione Programmi utili scritti in awk
).
La buona progettazione di una funzione è importante; la funzione dev’essere
generale, ma potrebbe anche avere un ragionevole comportamento di default.
Viene chiamata con un vettore e anche con gli indici iniziale e finale degli
elementi del vettore da riunire.
Questo presuppone che gli indici del vettore
siano numerici—una supposizione logica, dato che il vettore probabilmente è
stato creato con split()
(vedi la sezione Funzioni di manipolazione di stringhe):
# join.awk --- trasforma un vettore in una stringa function join(vettore, iniz, fine, separ, risultato, i) { if (separ == "") separ = " " else if (separ == SUBSEP) # valore magico separ = "" risultato = vettore[iniz] for (i = iniz + 1; i <= fine; i++) risultato = risultato separ vettore[i] return risultato }
Un ulteriore argomento opzionale è il separatore da usare quando si uniscono
nuovamente le stringhe. Se il chiamante fornisce un valore non nullo,
join()
usa quello; se non viene fornito,
per default ha un valore nullo.
In questo caso, join()
usa uno spazio singolo come separatore
di default
per le stringhe. Se il valore è uguale a SUBSEP
,
join()
unisce le stringhe senza un separatore tra di esse.
SUBSEP
serve come valore “magico” per indicare che potrebbe non esserci
un separatore tra le stringhe componenti.72
Sarebbe bello
se awk
avesse un operatore di assegnamento per la concatenazione.
La mancanza di un esplicito operatore per la concatenazione rende le operazioni
sulle stringhe più difficili di quanto potrebbero essere.
Successivo: Funzione getlocaltime, Precedente: Funzioni ordinali, Su: Funzioni di tipo generale [Contenuti][Indice]