Discussions au sujet de NI LabVIEW

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

Chercher la virgule dans une chaine de caractère

Résolu !
Accéder à la 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 Compliments
Message 11 sur 22
1 588 Visites

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
1 572 Visites

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

0 Compliments
Message 13 sur 22
1 567 Visites

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

 

Tout télécharger
0 Compliments
Message 14 sur 22
1 542 Visites
Solution
Accepté par user_79

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
1 538 Visites

il y a virgule et virgule Smiley très heureux

0 Compliments
Message 16 sur 22
1 532 Visites

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
1 527 Visites

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
1 505 Visites

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
1 501 Visites

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

Message 20 sur 22
1 486 Visites