2011-10-12 2 views
3

J'ai cette chaîne:Parsing une chaîne à un tableau en C#

string resultString="section[]=100&section[]=200&section[]=300&section[]=400"; 

Je veux juste les nombres stockés dans le tableau result[] comme

result[0]=100 
result[1]=200 
result[3]=300 
result[4]=400 

Quelqu'un peut-il me aider.

+0

alors vous voulez passer la deuxième position dans le tableau? Et comment déterminez vous à sauter? – Icarus

+0

Ce n'est pas une chaîne ...? –

+0

En fait, j'ai obtenu cette chaîne de la zone de texte, donc la clarté que je viens de représenter comme une chaîne – Krishh

Répondre

7
NameValueCollection values = HttpUtility.ParseQueryString("section[]=100&section[]=200&section[]=300&section[]=400"); 
string[] result = values["section[]"].Split(','); 
// at this stage 
// result[0] = "100" 
// result[1] = "200" 
// result[2] = "300" 
// result[3] = "400" 
+0

+1 de moi gentil! –

+0

Bonne réponse. Merci beaucoup !! – Krishh

2
str.Split('&') 
    .Select(s=>s.Split('=') 
       .Skip(1) 
       .FirstOrDefault()).ToArray(); 

OU

str.Split(new[] { "section[]=" }, StringSplitOptions.RemoveEmptyEntries) 
    .Select(s => s.Replace("&", "")) 
    .Select(Int32.Parse).ToArray(); 

OU

 var items = new List<string>(); 
     foreach (Match item in Regex.Matches(str, @"section\[\]=(\d+)")) 
      items.Add(item.Groups[1].Value); 
1
string x = "section[]=100&section[]=200&section[]=300&section[]=400"; 

// Split into a list 
string[] vals = x.Split('&'); 
List<int> results = new List<int>(); 
foreach (string aResult in vals) 
{ 
    int result = 0; 
    string[] val = aResult.Split('='); 

    // Get right hand side 
    if (val.Length == 2 && int.TryParse(val[1], out result)) 
     results.Add(result);      
} 
2

Comment cela?

 string s ="section[]=100&section[]=200&section[]=300&section[]=400"; 
     Regex r = new Regex(@"section\[\]=([0-9]+)(&|$)"); 

     List<int> v = new List<int>(); 

     Match m=r.Match(s); 
     while (m.Success){ 
      v.Add(Int32.Parse(m.Groups[1].ToString())); 
      m=m.NextMatch(); 
     } 

     int[]result = v.ToArray();