2
votes

Comment puis-je diviser une chaîne pour stocker le contenu dans deux tableaux différents en c #?

La chaîne que je souhaite fractionner est un tableau de chaînes. le tableau contient des chaînes telles que:

G1, Active

G2, Inactive

G3, Inactive

.

. p>

G24, Actif

Maintenant, je veux stocker les G dans un tableau, et Actif ou Inactif dans un tableau différent. Jusqu'à présent, j'ai essayé ce qui a réussi à stocker toute la partie de G mais j'ai perdu l'autre partie. J'ai utilisé la fonction Split mais je n'ai pas fonctionné, j'ai donc essayé ceci.

int i = 0;
for(i = 0; i <= grids.Length; i++)
{
    string temp = grids[i];
    temp = temp.Replace(",", " ");
    if (temp.Contains(' '))
    {
        int index = temp.IndexOf(' ');
        grids[i] = temp.Substring(0, index);
    }
    //System.Console.WriteLine(temp);
}

Veuillez m'aider à atteindre cet objectif. Je suis nouveau en C #.

c#

0 commentaires

4 Réponses :


0
votes

semble que vous ayez une liste de Gxx, Active ma recommandation est tout d'abord de diviser la chaîne en fonction de l'espace, ce qui vous donnera le tableau précédemment mentionné en faisant le suivant:

string G24Value = GxListActiveInactive.FirstOrDefault(a => a.Key == "G24").Value;

Donc, maintenant vous avez un tableau , et je vous recommande fortement d'utiliser un objet / Tuple / Dictionnaire dépend de ce qui vous convient le plus dans l'ensemble du scénario. pour l'instant, j'utiliserai Dictionary car il semble être une valeur-clé

Dictionary<string, string> GxListActiveInactive = new Dictionary<string, string>();
foreach(var singleGItems in splitedGItems)
{
    string[] definition = singleGItems.Split(",");
    GxListActiveInactive.Add(definition[0], definition[1]);
}

Ce que j'achète dans ce code, c'est de créer une collection qui est clé- valeur, maintenant vous devez rechercher le G24 manuellement en faisant le suivant

string text = "G1,Active G2,Inactive G3,Inactive G24,Active";
string[] splitedGItems = text.Split(" ");


0 commentaires

1
votes

Si je comprends bien le problème - nous avons un tableau de chaînes Par exemple:

static string[] LoadArray()
{
    return new string[]
    {
        "G1,Active",
        "G2,Inactive",
        "G3,Active",
        "G4,Active",
        "G5,Active",
        "G6,Inactive",
        "G7,Active",
        "G8,Active",
        "G9,Active",
        "G10,Active",
        "G11,Inactive",
        "G12,Active",
        "G13,Active",
        "G14,Inactive",
        "G15,Active",
        "G16,Inactive",
        "G17,Active",
        "G18,Active",
        "G19,Inactive",
        "G20,Active",
        "G21,Inactive",
        "G22,Active",
        "G23,Inactive",
        "G24,Active"
    };
}
static void Main(string[] args)
{
    string[] myarrayOfStrings = LoadArray();
    string[] gArray = new string[24];
    string[] statusArray = new string[24];

    int index = 0;
    foreach (var item in myarrayOfStrings)
    {
        var arraySplit = item.Split(',');
        gArray[index] = arraySplit[0];
        statusArray[index] = arraySplit[1];

        index++;
    }

    for (int i = 0; i < gArray.Length; i++)
    {
        Console.WriteLine("{0} has status : {1}", gArray[i] , statusArray[i]);
    }

    Console.ReadLine();
}

Maintenant, nous voulons diviser chaque élément et stocker la partie g dans un tableau et l'état dans un autre.

En travaillant avec des tableaux, la solution est de - traverser le arrayOfStrings.

Pour chaque élément du arrayOfStrings , nous le divisons par ',' séparateur.

Le Split code> opération renverra un autre tableau de deux éléments, la partie g et le statut - qui seront stockés respectivement dans des tableaux distincts ( gArray et statusArray ) pour une récupération ultérieure. Ces tableaux auront une relation 1 à 1.

Voici mon implémentation:

arrayOfStrings[24] = 
    {
      "G1,Active",
      "G2,Inactive",
      "G3,Active",
       ...
      "G24,Active"
    }


0 commentaires

0
votes

faites-le simplement:

 var splitedArray = YourStringArray.ToDictionary(x=>x.Split(',')[0],x=>x.Split(',')[1]);
 var gArray = splitedArray.Keys;
 var activeInactiveArray = splitedArray.Values;

J'espère que ce sera utile


0 commentaires

0
votes

Vous pouvez diviser la chaîne en utilisant Split ; la première partie doit être celle des G, tandis que la deuxième partie sera "active" ou "inactive".

int i;
string[] temp, activity = new string[grids.Length];
for(i = 0; i <= grids.Length; i++)
{
    temp = grids[i].Split(',');
    grids[i] = temp[0];
    activity[i] = temp[1];
}


0 commentaires