En utilisant RegExp vous pouvez procéder de deux façons, en fonction de votre source d'entrée
Exemple 1
En supposant que vous avez lu source et enregistré une seule ligne dans un vecteur ou d'une liste:
string[] input = { "abc = tamaz feeo maa roo key gaera porla", "Xyz = gippaza eka jaguar ammaz te sanna." };
Regex mySplit = new Regex("(\\w+)\\s*=\\s*((\\w+).*)");
List<word> mylist = new List<word>();
foreach (string wordDef in input)
{
Match myMatch = mySplit.Match(wordDef);
word myWord;
myWord.Word = myMatch.Groups[1].Captures[0].Value;
myWord.Definition = myMatch.Groups[2].Captures[0].Value;
mylist.Add(myWord);
}
Exemple 2
Supposons que vous ayez lu votre source dans une seule variable (et toute ligne est terminée avec le caractère de saut de ligne '\ n'), vous pouvez utiliser la même expression rationnelle "(\ w +) \ s * = \ s * ((\ w +). *)" mais de cette manière
string inputs = "abc = tamaz feeo maa roo, key gaera porla\r\nXyz = gippaza eka jaguar; ammaz: te sanna.";
MatchCollection myMatches = mySplit.Matches(inputs);
foreach (Match singleMatch in myMatches)
{
word myWord;
myWord.Word = singleMatch.Groups[1].Captures[0].Value;
myWord.Definition = singleMatch.Groups[2].Captures[0].Value;
mylist.Add(myWord);
}
lignes qui correspond ou ne correspond pas à l'expression rationnelle "(\ w +) \ s = \ s * ((\ w +). ) ":
- "abc = Tamaz feeo maa roo clé porla de gaera, qsdsdsqdqsd \ n" ->match
- !" Xyz = gippaza Eka te jaguars ammaz Sanna. sdq = sqds \ n "->match vous pouvez insérer une description qui comprend des espaces trop
- ! " Qsdqsd = \ nsdsdsd \ n" ->match une paire multiligne trop
- " sdqsd = \ n » ->ne correspondent pas (descr manque)
- ! "= sdq sqdqsd \ n" -.!>ne correspondent pas (mot manquant)
Quel est le motif de choisir d'utiliser un 'struct' plutôt qu'une classe?Et plus encore, le rendant mutable, avec des champs publics? Une structure immuable peut avoir du sens, bien qu'il soit tout aussi raisonnable d'utiliser une classe. –
Pour une réponse à votre dernière édition à la question, jetez un oeil à ma réponse. Il utilise la méthode File.ReadAllLines pour gérer vos retours à la ligne. –