Come splittare le stringhe in AL
Salve lettore, in questo primo articolo del 2023 volevo parlarti di un problema che spesso attanaglia i programmatori. Mi riferisco a come splittare i testi.
Questo problema è molto sentito quando abbiamo a che fare con fonti esterne che mandano verso Business Central delle stringhe che devono essere immesse in campi Text delle tabelle del gestionale. Molte volte, infatti, questi campi sono lunghi 100 (nel caso delle anagrafiche), ma, come nel caso dei commenti (tabelle *Comment*) solamente 80 caratteri; ma in generale dall’esterno, come un sito web o un altro software, ci viene mandato un testo molto più lungo.
Per ovviare a questo problema, ti segnalo un paio di metodi per splittare i testi; uno basato sullo split di un certo carattere sfruttando una funzione nativa di AL; l’altro, un po’ più elaborato, che sfrutta la lunghezza massima di un campo testo ad esempio di una tabella.
Partiamo dal primo scenario, ammettiamo di avere una pagina dove inseriamo un campo testo. Clicchiamo sul tasto “Splitta per carattere” e vediamo che cosa succede.
Come si può vedere, la stringa in input è lunga 108 caratteri. All’interno di questa stringa è presente il carattere ; ho utilizzato la funzione Split della stringa per fare lo split del testo ed ottenere il risultato che puoi vedere nell’immagine. Sotto puoi vedere il codice che ho richiamato tramite l’action.
Come puoi vedere tramite l’istruzione Split, viene splittato il testo in una list di text. Ciclando la lista e facendo la insert sulal tabella otteniamo quanto visto sopra.
La soluzione sopra è un po’ grezza, potrebbe andare bene in certi casi, ma magari si vuole ottenere uno split per la lunghezza massima del campo. A tal proposito ti presento la seconda soluzione che ho immaginato.
Alla base di tutto ci sta il concetto di quanto vogliamo troncare la stringa. Nel nostro caso della lunghezza massima del campo Comment della tabella Test Comment. Per verificare quante sottostringhe della stessa lunghezza otteniamo, dobbiamo utilizzare le operazioni DIV e MOD. Ti ricordo che DIV ti restituisce il valore intero di una divisione; mentre MOD il resto (modulo). A questo punto abbiamo quante sottostringhe creare e possiamo salvarle in una lista. A questo punto ci siamo ricondotti al primo esempio, quando avevamo una lista di stringhe da ciclare su cui poter fare la insert alla tabella. Il risultato che ne otteniamo è quello sotto.
Come puoi vedere, la stringa di lunghezza 108 caratteri è stata spacchettata in tre sottostringhe; due da 50 caratteri (numero massimo di caratteri del campo Commento) e una da 8 caratteri.
Questi sono un paio di modi per gestire lo split di stringhe, ci sono tanti altri modi per farlo, ma mi sono sentito di suggerirti questi due metodi perché mi sembrano quelli più pratici per un utilizzo comune.
Spero che questo articolo ti abbia dato qualche strumento in più affinché tu possa costruire in maniera più performante le tue applicazione in Microsoft Business Central.