Comment obtenir des caractères distincts en c #

J’ai un code comme

Ssortingng code="AABBDDCCRRFF"; 

Dans ce code, je veux ne retenir que des caractères distincts

La sortie devrait être comme:

 ANS: ABDCRF 

  ssortingng code = "AABBDDCCRRFF"; ssortingng answer = new Ssortingng(code.Distinct().ToArray()); 

Linq’s Distinct renvoie des éléments distincts d’une séquence. Lorsque la classe Ssortingng implémente IEnumerable , Distinct dans ce contexte renvoie un IEnumerable contenant tous les caractères uniques de la chaîne.

 code.Distinct(); 

Voici une approche qui fournit la chaîne et un nombre de caractères distincts …

 using System; using System.Collections.Generic; namespace SsortingngDict { class Program { static IDictionary charDict =new Dictionary(); static private ssortingng _charStr = "s;ldfjgsl;dkkjfg;lsdkfjg;lsdkfjg;lsdkfjg;lsdkfj"; private static int _outInt=0; static void Main(ssortingng[] args) { foreach (var ch in _charStr) { if (!charDict.TryGetValue(ch,out _outInt)) { charDict.Add(new KeyValuePair(ch,1)); } else { charDict[ch]++; } } Console.Write("Unique Characters: "); Console.WriteLine('\n'); foreach (var kvp in charDict) { Console.Write(kvp.Key); } Console.WriteLine('\n'); foreach (var kvp in charDict) { Console.WriteLine("Char: "+kvp.Key+" Count: "+kvp.Value); } Console.ReadLine(); } } } 

Sortie…

 Unique Characters: s;ldfjgk Char: s Count: 6 Char: ; Count: 6 Char: l Count: 6 Char: d Count: 6 Char: f Count: 6 Char: j Count: 6 Char: g Count: 5 Char: k Count: 6 

Option alternative utilisant le code compatible dotNet 2.0:

 public ssortingng RemoveDuplicateChars(ssortingng input) { var ssortingngBuilder = new SsortingngBuilder(input); foreach (char c in input) { ssortingngBuilder.Replace(c.ToSsortingng(), ssortingng.Empty) .Append(c.ToSsortingng()); } return ssortingngBuilder.ToSsortingng(); } 

Que diriez-vous de linq:

  var str = "AABBCCDDDDDDEEEEEFFF"; var unique = str.ToCharArray().Distinct(); Console.WriteLine("Answer: {0}.", ssortingng.Join(ssortingng.Empty, unique)); 

Vous pouvez le faire comme suit

 var s = "AABBDDCCRRFF"; var result = s.Distinct(); var distinct = result.Aggregate(ssortingng.Empty, (current, c) => current + c.ToSsortingng()); Console.WriteLine(distinct); 

Juste pour le plaisir – en utilisant un SsortingngBuilder

  ssortingng code = "AABBDDCCRRFF"; SsortingngBuilder sb = new SsortingngBuilder(); code.Distinct().ToList().ForEach(c => sb.Append(c)); MessageBox.Show(sb.ToSsortingng());