2010-05-31 3 views

Répondre

7

Vous pouvez utiliser Regex.Matches:

string[] bits = Regex.Matches(input, @"\w+(?:\W+\w+){0,29}") 
        .Cast<Match>() 
        .Select(match => match.Value) 
        .ToArray(); 

voir travailler en ligne: ideone

+1

Il ignore le premier caractère de chaque élément. –

+0

@Nick Binnet: J'ai mis à jour la réponse avec un lien vers un exemple montrant le bon fonctionnement du code. Pourriez-vous s'il vous plaît expliquer ce que vous entendez par "Il ignore le premier caractère de chaque élément"? Je ne comprends pas ce que vous voulez dire et la sortie ne semble pas avoir de "caractères ignorés". –

+0

désolé de mal comprendre votre réponse. Mon mauvais, j'essayais ceci pour un but différent. –

2

Une Regex scission serait logique si vous avez un très grand ou très petit nombre de caractères qui peuvent être une partie de votre chaîne. Vous pouvez également utiliser la méthode Substring de la classe String pour obtenir le résultat souhaité:

 string input = "abcdefghijklmnopqrstuvwxyz"; 
     const int INTERVAL = 5; 

     List<string> lst = new List<string>(); 
     int i = 0; 
     while (i < input.Length) 
     { 
      string sub = input.Substring(i, i + INTERVAL < input.Length ? INTERVAL : input.Length - i); 
      Console.WriteLine(sub); 
      lst.Add(sub); 
      i += INTERVAL; 
     } 
Questions connexes