2010-06-13 8 views
4

Y a-t-il un moyen intégré en C# de diviser un texte en un tableau de mots et de délimiteurs? Ce que je veux est:C#: Chaîne fractionnée renvoyant la liste des chaînes ET la liste des délimiteurs?

text = "word1 + word2 - word3"; 
string[] words = text.Split(new char[] { '+', '-'}); 
//Need list '+', '-' here? 

Des idées? Évidemment je peux juste traiter le texte à la main ... :)

+0

Il serait utile si vous modifiez votre message pour montrer ce que la sortie du tableau de mots devrait être pour votre exemple d'entrée. –

+0

Le tableau de mots contient exactement ce que Split() renvoie normalement, par exemple words = {"word1", "word2", "word3"} en plus je cherche delims = {'+', '-'} –

Répondre

9

Utilisez Regex.split() avec des parenthèses de capture http://msdn.microsoft.com/en-us/library/byy2946e.aspx

string input = @"07/14/2007"; 
string pattern = @"(-)|(/)"; 

foreach (string result in Regex.Split(input, pattern)) 
{ 
    Console.WriteLine("'{0}'", result); 
} 
// In .NET 1.0 and 1.1, the method returns an array of 
// 3 elements, as follows: 
// '07' 
// '14' 
// '2007' 
// 
// In .NET 2.0, the method returns an array of 
// 5 elements, as follows: 
// '07' 
// '/' 
// '14' 
// '/' 
// '2007' 
+0

Espérons vous utilisez .Net 2.0 – Sijin

0

Pas que je sache, mais je suppose que vous pourriez le faire avec une expression régulière. Il suffit de l'écrire pour ne sélectionner que vos délimiteurs, puis d'utiliser Regex.Matches et la collection renvoyée doit contenir les délimiteurs. Voir here pour plus d'informations, y compris un court échantillon.

Questions connexes