Rilevare le sottostringhe racchiuse tra 2 simboli in JavaScript

Con i linguaggi di programmazione come JavaScript si possono facilmente creare e gestire stringhe composte non solo da semplice testo e parole, ma anche da variabili e altri elementi avanzati.

Durante lo sviluppo di vari applicativi e software, ho trovato molto utile l’utilizzo di variabili all’interno delle stringhe, così da renderle più dinamiche e facilmente gestibili.

Tuttavia, a causa loro sono spesso incappato in nuove problematiche: come posso salvare una stringa contenente delle variabili personalizzate?.

Detto fatto: Ho pensato un po’ come già avviene con i normali linguaggi di programmazione e ho iniziato semplicemente a scrivere le mie variabili racchiuse tra due simboli, come delle parentesi o virgolette, così da permettermi anche di salvare un’intera stringa in un database SQL e riutilizzare le variabili anche in un secondo momento. Così ho ottenuto stringhe di testo composte come: “Mi chiamo {nome} e ho {eta} anni.“. Ora però si presentava il problema contrario, ovvero: Come recupero le parole all’interno delle parentesi? Come rilevo le sottostringhe contenute tra due simboli con JavaScript?

Ottenere le sottostringhe racchiuse tra due simboli in JavaScript

Lo scopo di questo articolo è appunto spiegare come recuperare/ottenere tutte le sottostringhe, contenute in una stringa di testo o frase, che siano racchiuse tra due simboli uguali o differenti (come delle parentesi tonde () o graffe{}, oppure tra virgolette “”), programmando con JavaScript.

Prendiamo in esempio questa frase: Oggi è {giorno} e ho mangiato {cibo} per colazione. Poi sono andato a {luogo}.

In questa stringa ho predisposto 3 variabili personalizzate interne chiamate “giorno“,”cibo” e “luogo“. Il mio compito ora è rilevarle singolarmente, inserirle in un array e assegnargli un valore reale.

Procedo dunque come segue:

var mystring = "Oggi è {giorno} e ho mangiato {cibo} per colazione. Poi sono andato a {luogo}";

function RilevaVariabili(str){
  return str.match(/{[\w\d]+}/g);
}

var Variabili = RilevaVariabili(mystring);


console.log(Variabili);
/*
  Array[
	"{giorno}",
	"{cibo}",
	"{luogo}"
  ]
*/

Per ottenere un array con tutte le variabili all’interno della stringa originaria, ho dovuto sviluppare una funzione specifica con l’uso di espressioni regolari (RegEx).

Ora, per utilizzare queste “variabili” potrei continuare in questo modo:

var mystring = "Oggi è {giorno} e ho mangiato {cibo} per colazione. Poi sono andato a {luogo}";

function RilevaVariabili(str){
  return str.match(/{[\w\d]+}/g);
}

var Variabili = RilevaVariabili(mystring);

mystring = mystring.replace(Variabili[0], "martedì");
mystring = mystring.replace(Variabili[1], "biscotti");
mystring = mystring.replace(Variabili[2], "Roma");

console.log(mystring);

//Oggi è martedì e ho mangiato biscotti per colazione. Poi sono andato a Roma

Nota bene. Questo metodo funziona bene, ma è molto “semplificato”. Se sono presenti molte variabili, ti consiglio di sviluppare un sistema di elaborazione più raffinato partendo da questo.

Aggiornamento

A richiesta, aggiungo un’alternativa al codice precedente. La funzione RilevaVariabili() può essere modificata affinché restituisca i valori racchiusi tra i simboli, senza i simboli (“{cognome}” -> “cognome“).

var mystring = "Oggi è {giorno} e ho mangiato {cibo} per colazione. Poi sono andato a {luogo}";

function RilevaVariabili(str){
  return str.match(/{[\w\d]+}/g).map(
    function(value){
      return value.substring(1, value.length-1)
    }); 
} 
var Variabili = RilevaVariabili(mystring);

console.log(Variabili);
/*
  Array[
	"giorno",
	"cibo",
	"luogo"
  ]
*/

Questa variante può essere usata anche per differenti scopi.

Iscriviti alla nostra Newsletter qui e seguici su Facebook per aggiornamenti!


Articoli recenti:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

CAPTCHA