Problème méthode split() chaine [Résolu]

Signaler
Messages postés
37
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 juillet 2012
-
mdevaux62
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
-
Bonjour tout le monde,

Je suis en train de faire un projet pour mon BTS Informatique de Gestion (les fameuses PTI pour ceux qui connaissent).
Je rencontre un soucis tout bête. Je développe une application de gestion de playlist en VB.NET avec base de données Access.
Mon soucis c'est lorsque je veux séparer l'artiste et le titre.
Je les récupère sous la forme: ARTISTE - Titre
Je fais donc ceci pour les séparer:
Dim Tab() As String = nom_ss_ext.Split("-")
Dim artiste As String = Trim(Tab(0))
Dim titre As String = Trim(Tab(1))


Ca marche bien sauf lorsque l'artiste est lui aussi séparé par un tiret. J'ai donc essayé ceci pour splitter:
Dim Tab() As String = nom_ss_ext.Split(" - ")


Mais il ne prend pas en compte des espaces. Merci de votre aide.

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Merci de vos réponses, cependant je ne vois pas l'utilité d'utiliser Instr() ... 

CX'est pourtant simple !
Instr (ou son equivalent VB.Net) te donne la position du premier " - " (et il ne saurait y en avoir dans le nom )

Ce qui est devant cette position (Mid ou son équivalent VB.Net) est le nom. Tout ce qui est derrière cette position + 3 est le titre !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,

tu vas t'embarquer vers une usine à gaz et les résultats seront aléatoires.
Utilise tout bêtement le caractère 173 en lieu et place du "-" pour séparer le nom du titre
Visuellement, tu auras ainsi un caractère identique (comme un "-") et le split sera à faire sur ce caractère 173.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
33
sinon voir peut-être du coté des expressions régulières.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Va mal s'embarquer également avec les expressions régulières, car comment savoir à quel niveau on est au 1er "-".
Autre solution :
Il est vraisemblable que son "-" de séparation du nom est du tître soit encadré par un espace (ou précédé d'un espace, ou encore suivi d'un espace) alors que je serais étonné de ce que ce caractère "-" soit dans le même à l'intérieur du nom. ====>>
utiliser alors instr (son équivalent VB.Net) sur " - " (par exemple) et prendre ce qu'il y devant (le nom) et ce qu'il y a derrière (le titre)
Instr plutôt que split (juste pour le cas ou, plus loin, on aurait un autre " - ")

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
37
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 juillet 2012

Merci de vos réponses, cependant je ne vois pas l'utilité d'utiliser Instr() ...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
33
Va mal s'embarquer également avec les expressions régulières, car comment savoir à quel niveau on est au 1er "-".

Avec une expression régulière il doit être possible de travailler sur " - " excluant de fait "-". Puisque le titre est séparé de l'artiste par " - " et que l'on peut supposer que le "-" n'est pas entouré d'espace quant il est présent dans le nom de l'artiste, ça doit être jouable.

Cependant je ne maitrise pas assez les regex pour savoir le faire.

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
37
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 juillet 2012

Merci pour l'explication, j'ai compris et ai réussi. Pour ceux qui veulent la solution, voici le morceau de code:

position = InStr(nom_ss_ext, " - ")
artiste = Mid(nom_ss_ext, 1, position)
titre = Mid(nom_ss_ext, position + 3)
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
5
Sinon en VB.Net

        Dim auteur_titre As String = "Jean-Louis Aubert - Dis quand reviendras-tu ?"
        Dim elements() As String = auteur_titre.Replace(" - ", "§").Split("§")
        MessageBox.Show(elements(0) & Environment.NewLine & elements(1))