fonction parse-replace | |
dionysos | 23-Jun-2011/22:14:29+2:00 |
Bonsoir, je me demandais s'il était possible de créer une fonction replace plus puissante que celle embarquait dans rebol. L'idée serait de fournir à cette fonction un bloc de règles parse, que parse utiliserait pour faire du remplacement. string: "toto bla bla bla toto bla titi bla bla (bla bla bla) bla toto" parse-replace string [ "toto" | "titi" | [ "(" skip to ")" ] | [ "[" skip to "]" ] ] "" => "bla bla bla bla bla bla bla" je voudrais éviter de mixer du replace/all avec du parse et avoir une solution avec 1 seul appel à parse. Avez vous une idée de la règle parse à utiliser? Merci | |
Laurent | 23-Jun-2011/23:38:21+2:00 |
Qu'on me corrige si je me trompe (avec parse on ne sait jamais) mais le problème c'est que tu passes en paramètres des trucs qui ne sont pas des règles proprement dites :(skip, to) et en plus tu passes des sous-règles ([...]) ce qui n'est pas géré par parse et en plus tu utilises des "ou" (|) ce qui ne marche qu'avec des éléments terminaux et encore en rebol 3 uniquement. Donc il faudrait tout décomposer dans ta fonction. Une fois qu'on a pris le coup parse n'est pas si compliqué, mais sa logique est un déroutante au début c'est vrai. | |
Laurent | 23-Jun-2011/23:39:22+2:00 |
un peu* déroutante | |
guest2 | 26-Jun-2011/11:16:50+2:00 |
La règle doit être dépoussiérée mais le principe fonctionne.r: [ "toto " | "titi " | "(" thru ") " | "[" thru "] " ] w: "" R3>> parse/all s [return while[change r w | skip]] R2>> parse/all s [some[p: r e: (p: change/part p w e) :p | skip]] | |
Login required to Post. |