Question de string
GreG19-Apr-2006/17:16:06+2:00
Je me suis apercu d'un truc:

>> {salut
{ ca va?}
== "salut^/ca va?"
>>
>> {saluuuuuuuuuuuuuuuuuuuuuuuuuut
{ ca vaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?}
== {saluuuuuuuuuuuuuuuuuuuuuuuuuut
ca vaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?}
>>

Dans le premier ca, le retour a la ligne est represente avec un ^/ et dans le second cas, on a vraiment un retour a la ligne, meme en faisant un mold.
C'est bizarre! Je m'attendais a ce qu'un mold remplace tout les retour a la ligne avec un ^/ mais en fait non.

Quelqu'un a des explications sur le sujet?
Reb-Kodeur20-Apr-2006/9:11:24+2:00
Ds un cas la chaine est entourée de {} alors ds le premier cas elle est entourée de "". Le mold agit différement sur ces deux types de string, qui pourtant sont identiques ds le fond.
GreG20-Apr-2006/17:44:06+2:00
Ce qui est bizarre, c'est qu'en prenant le cas de la chaine avec des {}, si on fait un:
replace/all chaine newline "*"

alors tout s'affiche sur une seule ligne avec des * a la place des retours a la ligne, ce qui parait normal.
par contre, j'aurais bien voulu faire de meme pour les newline, c-a-d avoir des ^/ a la place de mes *, le tout sur une seule ligne, est-ce possible? des idees?
reboltof21-Apr-2006/9:10:08+2:00
A mon avis, la seule solution afin d'éviter l'interprétation automatique des retours à la ligne, est d'empêcher celle-ci en protégeant la chaine par un bloc!

Par exemple:

>> chaine: to-block "test * ligne2 * ligne3 * avec des espaces * fin"
== [test * ligne2 * ligne3 * avec des espaces * fin]
>> replace/all chaine '* newline
== [test #"^/" ligne2 #"^/" ligne3 #"^/" avec des espaces #"^/" fin]

Remarque que cette approche n'est possible qu'en ayant des "*" entourés de deux espaces: " * ", sinon le 'replace ne peut pas être exécuté...

Il est alors aisé de réaliser la conversion, quand celle-ci devient nécessaire:

>> to-string chaine
== {test
ligne2
ligne3
avecdesespaces
fin}
reboltof21-Apr-2006/11:43:52+2:00
Correction:

>> form [test #"^/" ligne2 #"^/" ligne3 #"^/" avec des espaces #"^/" fin]
== {test
ligne2
ligne3
avec des espaces
fin}

... si on veut garder les espaces entre les mots!

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2