Discussions au sujet de NI LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Chercher la virgule dans une chaine de caractère

Solved!
Go to solution

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 Kudos
Message 11 of 22
(574 Views)

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 Kudos
Message 12 of 22
(558 Views)

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 Kudos
Message 13 of 22
(553 Views)

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 Kudos
Message 14 of 22
(528 Views)
Highlighted
Solution
Accepted by topic author user_1979@yahoo.fr
09-14-2018 01:03 AM

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 of 22
(524 Views)

il y a virgule et virgule Smiley Very Happy

0 Kudos
Message 16 of 22
(518 Views)

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

User

0 Kudos
Message 17 of 22
(513 Views)

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 Happy (je n'oublierai pas ce piège)

 

0 Kudos
Message 18 of 22
(491 Views)

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 Kudos
Message 19 of 22
(487 Views)

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 of 22
(472 Views)