Séparer une chaîne de caractère avec 2 caractères [Résolu]

Signaler
Messages postés
15
Date d'inscription
lundi 21 novembre 2016
Statut
Membre
Dernière intervention
16 avril 2018
-
Messages postés
14782
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 septembre 2020
-
Bonjour j'ai un fichier texte comme ceci:


BRIDGE.V2014R6I1.SOFT
icem.V4R12I2.SOFT
mygale.V4R1I1.SOFT,patch01_MAJ_APL.exe
photoshop.V2014R10I1.SOFT
rhino.V5R0I1.SOFT,patch01_Update_Files.exe
TSFX.V2R3I2.SOFT,patch01_corrections.exe,patch02_clock.exe,patch03_correction_tri_date.exe


et j'aimerai récupérer que les noms (icem,mygale etc) et les états (SOFT) à partir de ce fichier et importer ces données vers ma bdd.

le pb c'est que je n'arrive pas à bien séparer ma chaîne de caractère.
voici le code :

 
OleDbCommand cmdLogiciel = new OleDbCommand("INSERT INTO logiciel (nom,etat) VALUES (@nom,@etat), connection)";
OleDbCommand cmdVerifLogiciel = new OleDbCommand("SELECT count (*) FROM logiciel WHERE nom = @nom AND etat = @etat",connection);

string[] allLines = File.ReadAllLines(tempFile);

for(int i = 1; i <= allLines.Length; i++)
{
string[] items = Regex.Split(".", ",");

try
{
connection.Open();
new OleDbParameter("@nom", items[0]);
new OleDbParameter("@etat", items[2]);

//Verifier si les donnees existe deja dans la base
int count = (int)cmdVerifLogiciel.ExecuteScalar();

if(count <= 0 ) //
{

cmdLogiciel.ExecuteNonQuery();
connection.Close();
}

}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
connection.Close();
}
}

2 réponses

Messages postés
14782
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 septembre 2020
435
Bonjour

que veut dire
le pb c'est que je n'arrive pas à bien séparer ma chaîne de caractère

Cette ligne BRIDGE.V2014R6I1.SOFT est sensée devenir quoi?
Et celle-ci TSFX.V2R3I2.SOFT,patch01_corrections.exe,patch02_clock.exe,patch03_correction_tri_date.exe ?


Messages postés
15
Date d'inscription
lundi 21 novembre 2016
Statut
Membre
Dernière intervention
16 avril 2018

enft il faut que la ligne "BRIDGE.V2014R6I1.SOFT" devienne "BRIDGE SOFT" et l'autre ligne comme "TSFX SOFT".

Dans mes requêtes les noms correspondent a BRIDGE, TSFX,mygale, photoshop etc et les états correspondent a SOFT

je dois donc virer tt ce qui est entre le nom et l'etat, c'est a dire les mots qui commencent par V puis virer tout les patchs qui se trouvent a la fin.

Merci
Messages postés
14782
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 septembre 2020
435
OK, pas forcement besoin de Regex alors.

string[] morceaux = allLines[i].Split(',','.');

j'ai tapé de tête, il y a peut être une coquille.
Messages postés
15
Date d'inscription
lundi 21 novembre 2016
Statut
Membre
Dernière intervention
16 avril 2018

string [] items = allLines[i].Split(new char[] { '.', ',' });


j'ai trouvé ça et ça marche aussi
Messages postés
14782
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 septembre 2020
435
oui mais tu remarqueras que la signature de Split te dis que le tableau de char est "param", ce qui veut dire que tu tapes directement tes char et c'est automatiquement compris comme étant un tableau, en fait le new char[] {....} est fait pour toi.