Comment supprimer toutes les sous-chaînes correspondantes dans une chaîne? Par exemple si j'ai 20 40 30 30 30 30, alors j'ai juste 20 40 30 (et pas les 30 autres). Est-ce que j'utilise une regex? Si c'est le cas, comment?C# Remplacer les sous-chaînes correspondantes dans une chaîne
0
A
Répondre
9
Si ces "sous-chaînes" sont toutes séparées par des espaces, vous pouvez simplement les diviser, prendre les éléments distincts et recréer la chaîne.
var str = "20 40 30 30 30 30";
var distinctstr = String.Join(" ", str.Split().Distinct());
2
Je pense que la bonne réponse donnée à votre question est d'utiliser la fonction de remplacement:
string newString = oldString.Replace("30", "");
ou
string newString = orldString.Replace(" 30", "");
pour se débarrasser des blancs ..,
Modifier juste relu ... Mon erreur. Pardon. Je n'ai pas réalisé que vous vouliez garder un seul '30'.
+1. Beaucoup plus facile que la façon dont je l'ai fait. Je tombe si loin derrière ... Je n'ai pas beaucoup fait avec Linq, même si ça fait un bout de temps, donc je n'ai même jamais entendu parler de la méthode Enumerable.Distinct(). Je vous remercie! – David
Oui, ils sont séparés par des espaces. De plus, je ne connaissais pas la méthode Distinct(), merci pour l'info! – david
@David Stratton: Jouez avec LINQ aussi souvent que possible. Et il ne doit pas être écrit juste des requêtes. Des choses comme ça sont tout aussi bonnes. Cela permet de travailler beaucoup plus facilement avec les collections. Je dirais, utilisez-le partout où vous le pouvez d'abord jusqu'à ce que vous soyez à l'aise avec le code en termes d'utilisation de LINQ. Alors que vous comprenez les limites de ses capacités, vous saurez ce que c'est et ce n'est pas utile. –