Séparer une chaîne de caractère avec 2 caractères

Résolu
harris93 Messages postés 15 Date d'inscription lundi 21 novembre 2016 Statut Membre Dernière intervention 16 avril 2018 - Modifié le 3 mai 2017 à 12:17
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 - 3 mai 2017 à 16:23
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

Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
3 mai 2017 à 13:17
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 ?


0
harris93 Messages postés 15 Date d'inscription lundi 21 novembre 2016 Statut Membre Dernière intervention 16 avril 2018
Modifié le 3 mai 2017 à 14:01
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
0
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
3 mai 2017 à 15:53
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.
0
harris93 Messages postés 15 Date d'inscription lundi 21 novembre 2016 Statut Membre Dernière intervention 16 avril 2018
Modifié le 3 mai 2017 à 16:16
string [] items = allLines[i].Split(new char[] { '.', ',' });


j'ai trouvé ça et ça marche aussi
0
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
3 mai 2017 à 16:23
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.
0
Rejoignez-nous