le 09-13-2018 10:09 AM
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.
le 09-13-2018 11:55 AM
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.
le 09-13-2018 12:12 PM
le 09-14-2018 02:28 AM
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
09-14-2018 02:40 AM - modifié 09-14-2018 02:46 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.
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.
le 09-14-2018 02:51 AM
il y a virgule et virgule
le 09-14-2018 03:05 AM
Effectivement JB, la chaîne est correctement découpée quand j'utilise 82 en hexa. Merci beaucoup!
User
le 09-14-2018 06:34 AM
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 (je n'oublierai pas ce piège)
le 09-14-2018 06:59 AM
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.
le 09-14-2018 09:18 AM
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