Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 
Répondre

Chercher la virgule dans une chaine de caractère

Résolu !
Accéder à la solution

Re: Chercher la virgule dans une chaine de caractère

Oui c'est bien cela, mon but est d'obtenir ce qui précède la virgule, en utilisant la sortie "sous chaine précédente" de cette fonction. Je suis juste étonné que ca ne soit pas possible facilement.

Ta solution est plus élégante mais en utilisant la fonction "match pattern" j'ai plus de souplesse pr traiter des chaînes qui peuvent arriver un peu différemment parfois. D'où mon souhait de juste pouvoir détecter ce qui se trouve avant la virgule. 

0 Compliments
Message 11 sur 22
313 Visites

Re: Chercher la virgule dans une chaine de caractère

a) désolé pour les snippet ... ça ne fonctionne pas chez moi.

 

b) je ne comprends pas trop cette discussion.

Si le problème est simplement de trouver ce qui se trouve "avant" une virgule, la fonction "Match Pattern" fonctionne sans problème ... voir ma première réponse. Ceci dit, la fonction "Match Pattern" ne permet pas l'utilisation de l'ensemble des regex possibles (comme peut le faire la fonction "Match Regular Expression") ... mais pour simplement "sortir" ce qu'il y a avant une virgle, oui, "Match Pattern" fonctionne parfaitement.

PS : le code de ben (avec le regex "[0-9.]+(?=,)") va beaucoup plus loin que la demande de départ ... j'aime bien ton code ben.

0 Compliments
Message 12 sur 22
297 Visites

Re: Chercher la virgule dans une chaine de caractère

La question est mal définie, en effet pour obtenir 72.2 de la chaine 72.2,K Match Pattern est ce qu'il y a de plus simple mais en réalité il y a bien d'autres choses que 72.2 devant la virgule (comme dans forum.png du message 3).

 

Ben64

--------------------------------------------------
The best way to say thanks is to give kudos!
0 Compliments
Message 13 sur 22
292 Visites

Re: Chercher la virgule dans une chaine de caractère

En relisant ma question ainsi que le titre du post, je me rends compte effectivement que je n'ai pas été clair. Je reformule donc et joins le VI en LabVIEW 2015 (je travaille en LabVIEW 2018).

 

Je souhaiterai simplement utiliser les sorties de  Match Pattern pour avoir ce qui précède la virgule (sortie Sous chaine précédente de Match Pattern) et ce qui est situé après la virgule (sortie Sous chaine suivante de Match Pattern). Ce que je fais régulièrement lorsque mon caractère de recherche (entrée Expression régulière de Match Pattern) est autre chose qu'une virgule, et cela fonctionne toujours sans souci, avec des petites différences quand c'est un caractère spécial à rechercher.

 

Comme le montre le VI, j'ai essayé plusieurs choses au niveau de l'entrée de Match Pattern (expression régulière) comme la virgule toute seule, \, ou [\,], mais cela ne fonctionne pas. Je récupère dans les 3 cas la chaîne entière au niveau de la sortie "sous chaine précédente" de Match pattern alors que je devrais avoir seulement ":MPS000098R17042018+ 72.2".

 

Ma question est donc : que dois je mettre dans l'entrée de Match Pattern pour obtenir en sortie,  ce qui précède et ce qui suit la virgule?

 

Si le Vi en pièce  jointe fonctionne chez vous, peut-être que c'est un autre problème chez moi (paramétrage de Windows, ..?)

 

Merci.

User

 

0 Compliments
Message 14 sur 22
267 Visites
Highlighted
Solution
Accepté par l'auteur du sujet user_1979@yahoo.fr
09-14-2018 01:03 AM

Re: Chercher la virgule dans une chaine de caractère

L'explication est très simple mais peut-être pas évidente à découvrir : dans la chaîne de caractères en entrée, la virgule n'est pas la virgule habituelle !

En "Normal display", la confusion est aisée. En modifiant le mode d'affichage, la différence devient évidente.

 

Virgule ou non.png

 

Reste à savoir s'il est normal que la chaîne de caractères à traiter contienne ce caractère pour la virgule. Si oui, il suffit de l'utiliser pour la recherche. Sinon, mettre une vraie virgule dans la chaîne à traiter.

Message 15 sur 22
263 Visites

Re: Chercher la virgule dans une chaine de caractère

il y a virgule et virgule Smiley très heureux

0 Compliments
Message 16 sur 22
257 Visites

Re: Chercher la virgule dans une chaine de caractère

Effectivement JB, la chaîne est correctement découpée quand j'utilise 82 en hexa. Merci beaucoup!

User

0 Compliments
Message 17 sur 22
252 Visites

Re: Chercher la virgule dans une chaine de caractère

amusant ! c'est la première fois que je rencontre une virgule ',' avec une valeur de x82.

Je pouvais encore m'étonner longtemps que le code ne posait aucun soucis chez moi et manifestement refusait de fonctionner pour "user_1979". C'est ce qu'on appelle un petit bug vicieux  Smiley heureux (je n'oublierai pas ce piège)

 

0 Compliments
Message 18 sur 22
230 Visites

Re: Chercher la virgule dans une chaine de caractère

Pareil pour moi, je ne connaissais pas ce caractère ressemblant à une virgule... avant ce matin.

 

Comment le code pouvait-il fonctionner chez toi ? J'en déduis que tu avais changé soit la chaîne à traiter ou le caractère de recherche.

0 Compliments
Message 19 sur 22
226 Visites

Re: Chercher la virgule dans une chaine de caractère

C'est un problème d'encodage des caractères. Le caractère 0x82 "," est appelé "single low-9 quotation mark" dans l'ensemble de caractères ANSI (également appelé Windows-1252) et dans le standard ISO-1252 Latin-1. ANSI était le standard pour les versions US de Windows jusqu'à Windows 95. Les 128 premier caractères sont pratiquement identiques à ceux de l'ensemble ISO-8859-1. Il semblerait que le la chaine de caractères soit générée par une très vieille version de Windows (Windows 95?) ou ait été encodée en ISO-1252 Latin-1 ou bien les caractères générés soient différents et l'ordi qui les interprète utilise les caractère 128-255 de l'ensemble ANSI.

 

Ben64

--------------------------------------------------
The best way to say thanks is to give kudos!
Message 20 sur 22
211 Visites