Author |
Topic: Tirets dans un gsub (Read 3865 times) |
|
ANdre_B
Board Master
Email
Gender:
Posts: 2847
|
|
Tirets dans un gsub
« on: Jan 16th, 2018, 4:14pm » |
Quote | Modify
|
Dans mon développement en cours, j'utilise centralement la fonction "gsub". Le plus souvent, cela marche bien, mais j'ai des problèmes lorsqu'il y a un tiret dans le "pattern". Pas de problème si le tiret est seul dans le pattern, mais dès que cette zone comprend un tiret et d'autres caractères, la substitution ne se fait pas. Je veux modifier en masse des lignes de paroles, et les tirets y sont monnaie courante (et essentiels!) Quelqu'un a-t-il déjà rencontré ce problème? Y a-t-il une solution? J'ai lu attentivement le manuel aux pages appropriées (93 à 95) et n'y ai rien vu concernant le tiret; mais les 90% du paragraphe traite de l'utilisation de variables, cet arbre pourrait cacher la forêt. Merci d'avance.
|
« Last Edit: Jan 16th, 2018, 4:14pm by ANdre_B » |
offline |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
bubu42
Board Master
Gender:
Posts: 10508
|
|
Re: Tirets dans un gsub
« Reply #1 on: Jan 16th, 2018, 6:29pm » |
Quote | Modify
|
Je n'ai pas de pagination, mais il me semble que la réponse doit se trouver quelque part après la ligne 5437 du manuel (The Lua Language>Standard Librairies>String Manipulation) Il doit bien y avoir un caractère d'échappement qui permette de traiter ce cas de figure. <Edit>Je viens de me souvenir que j'avais proposé une traduction française du manuel concernant Lua... D'autre part, la numérotation des lignes varie -bien sûr- en fonction de la grandeur de la fenêtre ! Voir dans Manuel Français>Le langage Lua>le langage>Bibliothèques standard>Manipulation de chaîne (que j'aurais d'ailleurs mieux fait de mettre au pluriel...)</Edit>
|
« Last Edit: Jan 16th, 2018, 6:36pm by bubu42 » |
offline |
Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 2847
|
|
CeRe: Tirets dans un gsub
« Reply #2 on: Jan 17th, 2018, 11:03am » |
Quote | Modify
|
Merci, Bubu Cette section (en anglais) est bien celle que j'utilise comme référence, et j'ai trouvé celle en français qui est identique qant au contenu. Il y a différentes "séquences d'échappement", mais aucune autour d'un traitement spécial du tiret. J'ai une circonvolution (bypass) qui consiste à transformer partout les tirets en un caractère inutilisé, et inversément à la fin. Mais c'est pas joli, simplement cela me permet d'avancer.
|
|
offline |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
bubu42
Board Master
Gender:
Posts: 10508
|
|
Re: CeRe: Tirets dans un gsub
« Reply #3 on: Jan 17th, 2018, 1:31pm » |
Quote | Modify
|
on Jan 17th, 2018, 11:03am, Andre_B wrote:J'ai une circonvolution (bypass) qui consiste à transformer partout les tirets en un caractère inutilisé, et inversément à la fin. |
| C'est ce que j'allais proposer dans un premier temps. Maintenant, il reste à comprendre pourquoi Lua est dérouté par ces tirets. Peut-être faudrait-il ajouter un test sur leur nombre dans la chaîne avant le traitement, mais ça complique pas mal les choses et si on inclut les essais, c'est assez vite gourmand en temps (à moins d'avoir la chance/l'intelligence de trouver tout de suite la bonne routine, ce qui est rarement mon cas)
|
|
offline |
Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
|
|
|
Geo
Board Master
Gender:
Posts: 2488
|
|
Re: Tirets dans un gsub
« Reply #4 on: Jan 17th, 2018, 3:56pm » |
Quote | Modify
|
Bonjour Le tiret, en fait le moins est un caractère magique. Vous avez sans doute essayé de remplacer chaque - par %- ?
|
|
offline |
|
|
|
Michel VIGNERON
Board Junior Member
Email
Gender:
Posts: 61
|
|
Re: Tirets dans un gsub
« Reply #5 on: Jan 17th, 2018, 6:07pm » |
Quote | Modify
|
Bonjour, borner les caractères générique entre crochets : [-] Cela devrait passer.
|
|
offline |
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 2847
|
|
Re: Tirets dans un gsub
« Reply #7 on: Jan 17th, 2018, 7:16pm » |
Quote | Modify
|
En effet, Michel. En effet, Geo.. J'ajouterai que gsub traite bien le tiret (ou le moins) s'il est en première position, et pas seulement s'il est seul. Les crochets, ça ne m'arrange pas trop, car je dois m'attendre à des zones entre crochets dans les paroles (sampa ou autres). Même si ça peut être faisable, ça rendra certains aspects plus compliqués (et illisibles). Le % me semble mieux gérable. Je vais voir à inclure cela dans l'ensemble. Merci à tous les deux.
|
|
offline |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
Michel VIGNERON
Board Junior Member
Email
Gender:
Posts: 61
|
|
Re: Tirets dans un gsub
« Reply #8 on: Jan 17th, 2018, 7:27pm » |
Quote | Modify
|
Toujours les même problèmes de caractères magiques : \ force à interpréter le caractère suivant, mais dans les scripts ça ne fonctionne pas toujours. On peut arriver à la situation suivante : \\\[ (je force l'interprétation de \ pour interpréter \[. Dans les substitutions de ce genre, mieux vaut utiliser les simples quotes que les doubles dans les patterns. Je ne garanti pas le résultat.
|
|
offline |
|
|
|
Michel VIGNERON
Board Junior Member
Email
Gender:
Posts: 61
|
Après quelques test on peut avoir cela (sans changer les double-quotes par des simples ni utiliser le back-slash :
|
|
offline |
|
|
|
Geo
Board Master
Gender:
Posts: 2488
|
|
Re: Tirets dans un gsub
« Reply #10 on: Jan 17th, 2018, 8:28pm » |
Quote | Modify
|
Quote:J'ajouterai que gsub traite bien le tiret (ou le moins) s'il est en première position, et pas seulement s'il est seul. |
| Oui car il donne des indications pour la chaine de caractères qui le précède. quand il commence il n'a rien de particulier à faire et se contente d'être lui-même. Je vais essayer de retrouver son rôle exact. Ajout : trouvé ici : https://www.lua.org/manual/5.3/manual.html#6.4.1 "a single character class followed by '-', which also matches zero or more repetitions of characters in the class. Unlike '*', these repetition items will always match the shortest possible sequence; " je n'ai pas tout compris !
|
« Last Edit: Jan 17th, 2018, 9:19pm by Geo » |
offline |
|
|
|
PaulL
Board Master
Retired organist and choir director; former progra
Gender:
Posts: 1130
|
|
Re: Tirets dans un gsub
« Reply #11 on: Jan 18th, 2018, 1:00am » |
Quote | Modify
|
on Jan 17th, 2018, 8:28pm, Geo wrote: Ajout : trouvé ici : https://www.lua.org/manual/5.3/manual.html#6.4.1 "a single character class followed by '-', which also matches zero or more repetitions of characters in the class. Unlike '*', these repetition items will always match the shortest possible sequence; " je n'ai pas tout compris ! |
| Je parle anglais, et je ne comprends pas ça non plus!
|
|
offline |
Le coeur a ses raisons, que la Raison ne connaît point. Paul Littlefield, retired Church musician
HA+VS+PdfToMusic Linux Mint 21.3 Cinnamon
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 2847
|
|
Re: Tirets dans un gsub
« Reply #12 on: Jan 18th, 2018, 8:02am » |
Quote | Modify
|
Eh bien, moi non plus. Et j'ai souvent du débrouiller des explications techniques en anglais. Peut-être qu'en lisant tout le chapitre... Mais pour le moment, cela me suffit de savoir qu'un tiret qui n'est pas en tête a une signification spéciale, ce n'est pas "bug" mais "bad" (broken as designed). Une petite mention "caveat" dans le manuel MyrScript serait bienvenue. Je crois que je vais ajouter des % devant tous les - du pattern; cela restera lisible. Merci à tous.
|
|
offline |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
PaulL
Board Master
Retired organist and choir director; former progra
Gender:
Posts: 1130
|
|
Re: Tirets dans un gsub
« Reply #13 on: Jan 18th, 2018, 2:25pm » |
Quote | Modify
|
on Jan 18th, 2018, 8:02am, Andre_B wrote: . . . ce n'est pas "bug" mais "bad" (broken as designed). . . . |
| Ou, comme nous disions dans mes jours comme programmeur, "It's not a bug, it's a feature!"
|
« Last Edit: Jan 18th, 2018, 2:26pm by PaulL » |
offline |
Le coeur a ses raisons, que la Raison ne connaît point. Paul Littlefield, retired Church musician
HA+VS+PdfToMusic Linux Mint 21.3 Cinnamon
|
|
|
bubu42
Board Master
Gender:
Posts: 10508
|
|
Re: Tirets dans un gsub
« Reply #14 on: Jan 19th, 2018, 11:39am » |
Quote | Modify
|
Coïncidence... Sur un autre fil, il est fait implicitement mention des tirets dans les paroles, plus particulièrement sur ce lien. Il y a un script qui concerne la ligature de certaines notes, et en l'analysant on voit une manière de traiter ces fameux tirets. Si ça peut aider...
|
|
offline |
Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
|
|
|
|