Accueil > Forum > > > > SPLIT mots en plusieurs parties encadrés par des doubles quotes
SPLIT mots en plusieurs parties encadrés par des doubles quotes
vendredi 17 août 2012 à 20:40:46 |
SPLIT mots en plusieurs parties encadrés par des doubles quotes

PeD
|
Bonsoir,
Pas beaucoup d'espoir d'avoir une solution ( fonction - bout de code ) toute faite, mais sait on jamais; un petit malin ....
Je n'ai pas de problème pour isoler chaque mot dans un tableau avec split quand la chaine de caractère est celle ci :
01 PARIS FRANCE EUROPE
02 BRUXELLES BELGIQUE EUROPE
mais quand une ligne contient ceci
03 "BUENOS AIRES" ARGENTINE "AMERIQUE DU SUD"
idéalement le mot(1) est 03, le mot(2) "BUENOS AIRES", le mot(3) ARGENTINE et le
mot(4) "AMERIQUE DU SUD"
ce que ne retourne évidemment pas la fonction SPLIT
Ce genre de données est généré par exemple par des exports de MYSQL.
Ai je un autre moyen ( fonction ) pour arriver à mettre dans mon tableau ces mots logiques? ou dois je travailler en test caractère par caractère, ce qui se fera, je le crains fort,
au détriment de la performance.
Qu'en pensez vous?
Merci Pierre
Pierre
|
|
vendredi 17 août 2012 à 21:27:52 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

ucfoutu
|
Bonjour,
la question qui me vient d'emblée et naturellement à l'esprit est celle-ci :
Par quel code ce tableau a-t-il été rempli (et à partir de quoi) ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
|
|
vendredi 17 août 2012 à 21:41:57 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

PeD
|
Le fichier reçu résulte de "export record set to an external file" du résultat d'une query dans le MySQL Workbench.
En clair, les rows de "Select * FROM CITY".
Note : mais je ne suis pas sûr que j'ai répondu à la question, car je récupère un fichier .txt avec des lignes et non un réel tableau.
C'est le code après le SPLIT qui met en tableau dans mon application.
Du genre
Code Visual Basic : MotCnt = SPLIT(zone," ")
For i = 0 to MoCnt
mot(i) = ....
next
Ai je répondu?
Pierre
|
|
vendredi 17 août 2012 à 21:55:37 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

ucfoutu
|
car je récupère un fichier .txt avec des lignes et non un réel tableau
Reviens lorsque tu sauras exposer avec clarté et précision (tous les tenants et aboutissants). Entre ton premier message et le second, il y a un fossé que je regrette.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
|
|
vendredi 17 août 2012 à 23:54:47 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

PeD
|
Ouais bon. Je simplifie.
Cela me paraissait clair, mais bon, j'accepte.
On oublie MySQl.
J'ai un fichier .txt qui contient les lignes
01 PARIS FRANCE EUROPE
02 BRUXELLES BELGIQUE EUROPE
03 "BUENOS AIRES" ARGENTINE "AMERIQUE DU SUD"
Je veux mettre en tableau les mots de chaque ligne, puis traiter ( ce traitement est ici hors de propos ).
Donc à chaque lecture de ligne, je mets en tableau les mots avec SPLIT.
Pour ligne 1 , j'aurai mot(1) = 01,
mot(2) = PARIS, mot(3) = FRANCE, mot(4) = EUROPE.
Mais pour la ligne 03, je voudrais que "BUENOS AIRES" soit mis dans mot(2), or avec SPLIT cela ne sera pas le cas. Il mettra dans mot(2) = "BUENOS et dans mot(3) = AIRES", dans mot(4) = ARGENTINE.
Or je veux que les mots de même rang contiennent le même type d'info : mot(1) = sequence , mot(2) la ville, mot(3) le pays, mot(4) le continent.
Je me relis : je trouvais que j'avais mieux expliqué avant. Snif.
Pardon, donc.
Pierre
Pierre
|
|
vendredi 17 août 2012 à 23:59:05 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

titicar
|
Il existe sans doute plusieurs moyens. Un simple serait de remplacer tes séparateurs (un espace) par au autre caractère tant qu'ils ne se trouvent pas entre des guillemets, mais ça implique l'appel d'une fonction à écrire.
titicar
|
|
samedi 18 août 2012 à 00:01:38 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

jack
|
Salut
Split n'a jamais renvoyé de chiffre, mais un tableau de chaines.
Ton code n'est pas correct.
Ton petit problème m'a titillé, et j'aime ça.
Voilà donc le fruit de mon travail.
Code Visual Basic : Dim Data1 As String
Dim Data2 As String
Dim aMots() As String
Dim aMots2() As String
Dim bInWord As Boolean
Dim sTemp As String
Dim lIndex As Long
Dim r As Long
Dim t As Long
Data1 = "01 PARIS FRANCE EUROPE"
Data2 = "03 ""BUENOS AIRES"" ARGENTINE ""AMERIQUE DU SUD"""
aMots = Split(Data1, " ") ' Ici, change Data1 / Data2
' Visu avant
For r = 0 To UBound(aMots)
Debug.Print r, aMots(r)
Next r
Debug.Print "--------------------------------------------------------"
ReDim aMots2(0 To UBound(aMots))
lIndex = -1
sTemp = ""
If UBound(aMots) > 4 Then
bInWord = False
For r = 0 To UBound(aMots)
If Left$(aMots(r), 1) = """" Then
' Si la chaine commence par "
sTemp = Mid$(aMots(r), 2)
bInWord = True
ElseIf Right$(aMots(r), 1) = """" Then
' Si la chaine se termine par "
sTemp = sTemp & " " & Left$(aMots(r), Len(aMots(r)) - 1)
bInWord = False
Else
If bInWord Then
' Si on est dans un "mot"
sTemp = sTemp & " " & aMots(r)
Else
sTemp = aMots(r)
End If
End If
' Mémo or not mémo
If bInWord Then
' Si on est dans un "mot"
' On ne fait rien, on attend la fin du "mot"
Else
' " non trouvé ou fin de zone ou mot normal
lIndex = lIndex + 1
aMots2(lIndex) = sTemp
sTemp = ""
End If
Next r
' Redimensionne le tableau 2 qui doit être plus petit, maintenant
ReDim Preserve aMots2(0 To lIndex)
Else
' Ligne normale sans "
aMots2 = aMots
End If
' Visu après
For r = 0 To UBound(aMots2)
Debug.Print r, aMots2(r)
Next r
Debug.Print "--------------------------------------------------------"
En ce moment, je ne programme plus beaucoup et ça m'a fait plaisir de replonger dedans.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
|
|
samedi 18 août 2012 à 00:28:18 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

PeD
|
Merci.
A titicar : j'ai pensé à cela aussi, mais j'ai peur de la performance. Je pourrais avoir un fichier avec 1 million ou davantage de lignes, ou une largeur de ligne importante.
Ce que j'ai donné n'est qu'un exemple pour les besoins de l'exercice.
Je reçois ces fichiers et ne suis pas maître de leur grandeur.
A Jack : j'essaie demain.
Et vous reviendrai.
La bonne nuit.
Pierre
|
|
samedi 18 août 2012 à 00:49:00 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

banana32
|
Bonsoir,
Si c'est bien du .NET, tu peux faire comme ceci (MaChaine étant l'expression à splitter) :
Code Visual Basic : Dim MonTableau() As String = MaChaine.Split(New String() {Convert.ToChar(34)}, StringSplitOptions.RemoveEmptyEntries)
|
|
samedi 18 août 2012 à 02:49:05 |
Re : SPLIT mots en plusieurs parties encadrés par des doubles quotes

jack
|
Ah oui, petit détail qui 'avait échappé : Mon code est du VB6/VBA.
A transcrire sous .Net sera simple.
Mais si la solution proposée par Banana est efficace, quel gain !
(5 min plus tard)
Je viens de faire l'essai de la syntaxe proposée par Banana.
En fait, c'est un Split sur les ", ce qui n'est pas correct :
- Si pas de " dans la chaine : Renvoie une seule donnée = la chaine entière
- Si des " : Renvoie bien un tableau de chaque item
- Mais si des " juste pour le nom de la ville, on aura que 3 items, les 2 derniers n'étant pas découpés
|
|
Cette discussion est classée dans : fonction, mot, caractère, mots, split
Répondre à ce message
Sujets en rapport avec ce message
probleme avec split [ par littleoliver ]
bonjour à tous ceux qui liront mon message.j'essaye de faire une fonction qui permet de chercher un mot dans un fichier texte.pour cela j'utilise deux
compteur et fonction split [ par king_kunu ]
salutj'utilise la fonction split pour decomposer ma chaine de caratere dans un tableauj'aimerais savoir si il est possible de connaitre la taille du t
Fonction split [ par musicmandj5 ]
Bonjour,je souhaite découper une chaine afin de retrouver toutes les valeurs numériques de celle ci.Les chiffres dans la chaine sont séparés par des +
recherche d'une chaine de caratères et souligner le mot contenant cette chaîne de caractère (WORD VBA) [ par coulpi ]
je suis en train d'écrire une macro permettant de rechercher une chaîne de caractère et par la suite de souligner le mot contenant cette chaîne de car
Trouver 1 caractère dans une String en partant de la fin........... [ par cissou06 ]
Bonjour!Voilà, j'ai une numérotation de titre, par exemple "1.12.3" et je voudrais avoir la position du dernier "." dans cette chaîne de caractères. J
mot de passe sous access [ par kFar ]
j'ai dans ma base access une table contenant des mots de passe. j'ai appliqué le masque de saisie mot de passe sur le champ correspondant, ainsi on ne
Vérification de la presence d'une chaine de caractère dans une autre [ par hasen ]
Bonjour, bonjourJe voudrais savoir si qqun n'a pas sous la main une fonction toute faite en vba qui lorsqu'on lui passe deux chaine de caractères, per
Speech SDK [ par azerty25 ]
Bonsoir allJ'utilsie le Speech SDK 5.1 pour une appplication et afin d'essayer d'améliorer la reconnaissance des mots, je voudrai savoir s'il est po
fonction split() [ par jeremy4920 ]
ca veut dire koi mot = split(chaine,vbcrlf)
Nombre de mots dans une phrase et mot le plus long [ par SUBMAIN ]
Voila je voudrais savoir comment faire un programme qui saisisse une phrase et affiche :-le nombre de mots dans cette phrase.-Le mot le plus long et l
Livres en rapport
|
Derniers Blogs
SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet [ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS.[ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS. par Patrick Guimonet
C'est un point peu mis en avant mais SharePoint 2013 a été l'occasion de remettre de l'ordre dans les modèles de sites. Tout d'abord, un certain nombre de modèles ont été tout simplement rendus obsolètes (cf. Fonctionnalités déco...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|