chaîne de remplacer l'utilisation de Linq en c#
public class Abbreviation
{
public string ShortName { get; set; }
public string LongName { get; set; }
}
J'ai une liste d'Abréviation objets comme ceci:
List abbreviations = new List();
abbreviations.add(new Abbreviation() {ShortName = "exp.", LongName = "expression"});
abbreviations.add(new Abbreviation() {ShortName = "para.", LongName = "paragraph"});
abbreviations.add(new Abbreviation() {ShortName = "ans.", LongName = "answer"});
string test = "this is a test exp. in a para. contains ans. for a question";
string result = test.Replace("exp.", "expression")
...
J'attends le résultat:
"c'est une expression de test dans un paragraphe contient réponse pour une question"
Actuellement, je suis en train de faire:
foreach (Abbreviation abbreviation in abbreviations)
{
test = test.Replace(abbreviation.ShortName, abbreviation.LongName);
}
result = test;
Demandais si il ya une meilleure façon, en utilisant une combinaison de Linq et de Regex.
LINQ n'est pas une solution à chaque problème, ce que vous avez écrit est très bien.
OriginalL'auteur gangt | 2011-02-28
Vous devez vous connecter pour publier un commentaire.
Si vous avez vraiment envie de raccourcir votre code, vous pouvez utiliser le
ForEach
méthode d'extension sur leList
:techniquement, c'est pas de la programmation fonctionnelle soit - blogs.msdn.com/b/ericlippert/archive/2009/05/18/...
Je savais qu'il y est toujours une meilleure façon que ce que j'ai l'habitude de faire. Il fonctionne très bien. Merci à vous et à Mike.
je veux le même mais comment puis-je trouver la partie de la chaîne et de le remplacer par un autre texte ? s'il vous plaît suggérer.
OriginalL'auteur p.campbell
Vous pouvez utiliser la méthode ForEach. Aussi, un StringBuilder devrait rendre les opérations sur votre chaîne plus efficace:
OriginalL'auteur Mike Cole
Essayer celui-ci
ou l'un au-dessous de
OriginalL'auteur rejo