3 votes

diviser une chaîne de caractères dans un dictionnaire

Comment diviser la chaîne de caractères suivante

string s = "username=bill&password=mypassword";

Dictionary<string,string> stringd = SplitTheString(s);

de telle sorte que je puisse la capturer comme suit :

string username = stringd.First().Key;
string password = stringd.First().Values;

Veuillez m'en informer. Merci de votre compréhension.

7voto

musefan Points 23208

Vous pouvez remplir la liste des dictionnaires de la manière suivante :

Dictionary<string, string> dictionary = new Dictionary<string, string>();
string s = "username=bill&password=mypassword";

foreach (string x in s.Split('&'))
{
    string[] values = x.Split('=');
    dictionary.Add(values[0], values[1]);
}

ce qui vous permettrait d'y accéder de la manière suivante :

string username = dictionary["username"];
string password = dictionary["password"];

NOTE : n'oubliez pas qu'il n'y a pas de validation dans cette fonction, elle suppose que votre chaîne d'entrée est correctement formatée.

5voto

BrokenGlass Points 91618

Il semble que vous essayez d'analyser une chaîne de requête - ceci est déjà intégré, vous pouvez utiliser HttpUtility.ParseQueryString() pour cela :

string input = "username=bill&password=mypassword";
var col = HttpUtility.ParseQueryString(input);
string username = col["username"];
string password = col["password"];

2voto

MilkyWayJoe Points 6251

Je pense que quelque chose de similaire à ceci devrait fonctionner

public Dictionary<string, string> SplitTheStrings(s) {
    var d = new Dictionary<string, string>();  
    var a = s.Split('&');
    foreach(string x in a) {
        var b = x.Split('=');
        d.Add(b[0], b[1]);
    }
    return d;
}

1voto

mattematico Points 679
        var splitString = "username=bill&password=pass";
        var splits = new char[2];
        splits[0] = '=';
        splits[1] = '&';
        var items = splitString.Split(splits);
        var list = new Dictionary<string, string> {{items[1], items[3]}};

        var username = list.First().Key;
        var password = list.First().Value;

Cela peut aussi fonctionner

1voto

Tilak Points 13095

Si les clés ne se répètent pas

var dict = s.Split('&').Select( i=>
{
    var t = i.Split('=');
    return  new {Key=t[0], Value=t[1]};}
).ToDictionary(i=>i.Key, i=>i.Value);

Si Keys peut répéter

    string s = "username=bill&password=mypassword";
    var dict = s.Split('&').Select( i=>
    {
        var t = i.Split('=');
        return  new {Key=t[0], Value=t[1]};}
    ).ToLookup(i=>i.Key, i=>i.Value);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X