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

harris93 15 Messages postés lundi 21 novembre 2016Date d'inscription 16 avril 2018 Dernière intervention - 3 mai 2017 à 12:17 - Dernière réponse : Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention
- 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();
}
}
Afficher la suite 

5 réponses

Répondre au sujet
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 3 mai 2017 à 13:17
0
Utile
1
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 ?


harris93 15 Messages postés lundi 21 novembre 2016Date d'inscription 16 avril 2018 Dernière intervention - 3 mai 2017 à 14:00
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
Commenter la réponse de Whismeril
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 3 mai 2017 à 15:53
0
Utile
2
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.
harris93 15 Messages postés lundi 21 novembre 2016Date d'inscription 16 avril 2018 Dernière intervention - 3 mai 2017 à 16:15
string [] items = allLines[i].Split(new char[] { '.', ',' });


j'ai trouvé ça et ça marche aussi
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 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.
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.