Insérez le bouton de commande dans Sheet2 et programmez-le comme suit :
Sous-CommandButton1_Click() privé
Dim i1 aussi longtemps, i2 aussi longtemps
Dim a$, b$
i2 = 2
Do While Range("C" & i2) ""
un$ = ""
b$ = ""
i1 = 1
Feuilles de travail Do While ("Sheet1").Range("C" & i1) ""
Si Feuilles de calcul("feuille1").Range("C" & i1) = Range("C" & i2) Alors
a$ = a$ & Feuilles de calcul("sheet1").Range("A" & i1) & ";"
b$ = b$ & Feuilles de calcul("sheet1").Range("B" & i1) & ";"
Fin si
i1 = i1 + 1
Boucle
Si a$ "" Alors a$ = Gauche(a$, Len(a$) - 1)
Si b$ "" Alors b$ = Gauche(b$, Len(b$) - 1)
Plage("A"& i2) = a$
Plage("B"& i2) = b$
i2 = i2 + 1
Boucle
Fin du sous-marin
Cette ligne de commande peut vous aider à supprimer le bloc de validation contenant Merge (tout bloc de texte de ce type)
sed -n '/commit/{:a;h;n;/Merge/b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' journal > log.txt
L'effet de l'opération est le suivant :
Ma commande est peut-être un peu compliquée. Une petite explication, juste pour référence :
Parmi eux : a :b :c :d est l'étiquette de saut de commande
1. /commit/{:a;h;n;
Lorsqu'une ligne de validation est trouvée, copiez cette ligne dans l'espace de conservation et lisez la ligne suivante.
2. /Fusionner/b;
Si la nouvelle ligne que vous venez de lire contient Merge, terminez le traitement de cette ligne, lisez la ligne suivante et continuez à rechercher le commit
Si la nouvelle ligne que vous venez de lire ne contient pas Merge, continuez à exécuter les commandes suivantes sur cette ligne :
3. :c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}
Ajoutez cette ligne à l'espace d'attente et lisez la ligne suivante. Si la dernière ligne n'est pas atteinte et que la validation n'est pas trouvée, exécutez la commande bc et passez à l'étiquette c - bouclez ce processus jusqu'à ce que la fin du fichier soit lue. ou lisez Aller à la ligne contenant le commit. Ensuite, x, échange le contenu de l'espace de maintien avec le contenu de l'espace de modèle, p, génère le contenu de l'espace de modèle (c'est-à-dire le bloc qui ne contient pas la fusion), x, l'échange à nouveau et le l'espace de modèle devient le contenu précédent (la fin du fichier ou contient la ligne de validation). ba, passez à l'étiquette a, continuez à vérifier cette ligne et répétez les étapes 1, 2 et 3.
Si la commande ci-dessus est modifiée en :
sed -n '/commit/{:a;h;n;/Merge/!b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' journal > log.txt
Ensuite, le résultat de sortie est uniquement le bloc de validation contenant Merge
Comme il existe des données à 1 chiffre et des données à 4 chiffres, s'il n'y a pas de retour chariot spécial dans le txt, le nombre de lignes et de colonnes ne peut pas être déterminé. S'il y a un retour chariot, utilisez simplement
#inclure
char *strtok( char *str1, const char *str2 );
Ce sera résolu.
Utilisez d'abord getline() pour lire une chaîne par ligne et additionner le nombre de lignes, puis
char *résultat = NULL;
chaîne de caractères[100][100];
int x = 0;
résultat = strtok( str, " ");
while( résultat != NULL ) {
strcpy(string[x++] , résultat);
résultat = strtok( NULL, " " );
}
De cette façon, toutes les données peuvent être enregistrées à l'aide d'un tableau de chaînes. x enregistre le nombre total, puis x divisé par le nombre de lignes correspond au nombre de colonnes.
Je suis libre aujourd'hui, je vais vous aider à rédiger l'intégralité du programme :
#inclure
#inclure
#inclure
en utilisant l'espace de noms std;
void main(){
char ch[100] = "
char b[100][100];int x=0,y=0;
ifstream fin("123.txt",ios::in);
fin.getline(ch,100);
pendant(!fin.eof()){
++x;
cout char *résultat = NULL;
résultat = strtok(ch,",");
while( résultat != NULL ) {
strcpy(b[y++],résultat);
cout résultat = strtok( NULL, "," );
}
memset(ch,0,100);
fin.getline(ch,100);
}
fin.close();
}
//Il a déjà été exécuté, pas de problème, b[100][100] correspond à tous les éléments, x est le nombre de lignes, y/x est le nombre de colonnes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!