2016-02-10 1 views
-5

J'ai une chaîne de caractères contenant le texte "AA55BB10CC1DD10E123". Je dois diviser la chaîne et la placer dans la liste comme champ de texte/valeur commeSéparer une chaîne en C#

AA | 55

BB | 10

CC | 1

DD | 10

E | 123

Merci

+1

Quoi de vos critères de division? N'importe quel nombre de lettres suivi d'un nombre quelconque de chiffres? –

+2

Et qu'avez-vous essayé? – lintmouse

+7

Bienvenue dans StackOverflow! Nous ne sommes pas un service d'écriture de code. Bien que nous soyons heureux de vous aider avec votre question * spécifique *, s'il vous plaît nous montrer ce que vous avez écrit jusqu'à présent et quel problème particulier vous avez rencontré. Lisez [Comment poser une bonne question?] (Http://stackoverflow.com/help/how-to-ask) pour plus de détails. –

Répondre

1

En utilisant ma boule de cristal magique, j'ai déterminé ce fut la réponse que vous recherchez!

string[] split = Regex.Matches("AA55BB10CC1DD10E123", @"[A-Z]+\d+") 
    .Cast<Match>() 
    .Select(x => Regex.Match(x.Value, @"[A-Z]+").Value + "|" + Regex.Match(x.Value, @"\d+").Value).ToArray(); 
0

S'il vous plaît essayez de montrer ce que vous avez essayé, c'est ce que vous cherchez.

List<string> split = Regex("[A-Z]{1}[a-z0-9]*"); 
    split= reg.Matches(InputText).Cast<Match>().Select(m => m.Value).ToList(); 
+0

Il n'y a aucune raison d'instancier la liste dans votre première ligne de code si vous allez la jeter à la ligne 3. – itsme86

+0

très vrai, il était plus juste de montrer le split en utilisant Regex. –

2
string text = "AA55BB10CC1DD10E123"; 
var letters = Regex.Split(text,@"\d").Where(t => !string.IsNullOrEmpty(t)); 
var digits = Regex.Split(text, @"[A-Z]").Where(t => !string.IsNullOrEmpty(t)); 
var myList = letters.Zip(digits, (l, d) => new {l,d});