All'interno di una stringa, sto tentando di aggiornare più istanze della stessa parola con valori diversi.Sostituzione di ogni istanza di una parola in una stringa con un valore univoco
Questo è un esempio eccessivamente semplificato, ma data la seguente stringa:
"The first car I saw was color, the second car was color and the third car was color"
La prima istanza della parola colore voglio sostituire con "rosso", la seconda istanza dovrebbe essere "verde" e la terza istanza dovrebbe essere "blu".
Quello che ho pensato di provare era un pattern regex per trovare parole limitate, interagire attraverso un ciclo e sostituirli uno alla volta. Vedi il codice di esempio qui sotto.
var colors = new List<string>{ "reg", "green", "blue" };
var sentence = "The first car I saw was color, the second car was color and the third car was color";
foreach(var color in colors)
{
var regex = new Regex("(\b[color]+\b)");
sentence = regex.Replace(sentence, color, 1);
}
Tuttavia, la parola "colore" non viene mai sostituita con il nome del colore appropriato. Non riesco a trovare quello che ho fatto di sbagliato.
Questo ha fatto il trucco. –
Questo è un adorabile delegato, vedo che non sei estraneo al tag 'regex'. :) – zx81
@ zx81: Grazie! Sì, nella mia esperienza, la maggior parte della gente non si rende nemmeno conto che la libreria .NET di Regex supporta un delegato della partita. Anche se preferisco le regex implementate come sintassi piuttosto che come API, come Perl. È quello che ho fatto con Cola in realtà, anche se non ho ancora deciso come mappare l'idioma dei delegati regex alla sintassi. – codenheim