OVH Cloud OVH Cloud

doubler ou transformer les anti slash dans une string d'un input

18 réponses
Avatar
Jean-Charles Gibier
Hello
Je suis confronté à un petit pb js

Dans mon script chargé j'ai ceci :

var val = "C:\home\unrepertoire\unautre\unfichier";
element.value = val;

dans le formulaire, l'input text qui correspond à 'element' affiche
évidement un truc du genre :

"C:homeunrepertoireunautreunfichier"

J'ai beau y aller à grand coups de replace je ne peut ni doubler ni
transformer les '\' de ma chaîne.
Je suppose que les '\' sont interprétés avant l'affectation.
Comment résoudre ce pb en restant avec javascript (du côté client donc).

Merci.
JCG

8 réponses

1 2
Avatar
Jean-Charles Gibier
Jean-Charles Gibier wrote:
var val = "C:homeunrepertoireunautreunfichier";



J'ajoute :
Le problème est plus complexe qu'il n'y paraît dans la mesure ou je
voudrais que les antislash's ne soient pas interprétés avant d'être
affectés à val. Je ne sais pas si c'est possible (en fait c'est la
réponse que je souhaite) mais sans vouloir abuser j'aimerai éviter les
réponses lapidaires du style "string.replace() point/barre" ... du
moins sans les avoir testées dans les conditions que j'expose.


Cette dernière phrase me choque pour le moins :


Allons il ne faut pas s'enflammer pour si peu.
Je ne sais pas si vous avez remarqué que la première réponse était un
peu lapidaire. Je fais juste gagner du temps à tout le monde en éludant
celles du même tonneau.

vous arrivez ici avec
une question en donnant le minimum d'éléments, et vous vous permettez
d'exiger des réponses testées et adaptées parfaitement à votre besoin ?


Je n'exige rien: la formule *sans vouloir abuser* était sincère.
J'ai donné tous les éléments nécessaires et même avancé des éléments de
réponse qui se sont avérés exact d'après mon interlocuteur.


Avez-vous testé le replace ?


C'est indiqué dans mon post initial. Je (me) cite :
"J'ai beau y aller à grand coups de replace je ne peut ni doubler ni
transformer les '' de ma chaîne."

Qu'est-ce que cela donne ?

Ben rien justement, l'antislash étant un méta caractère par excellence
il n'y a pas moyen de préserver les '' une fois qu'ils sont lus par le
browser. Vous saisissez le truc ?




Avatar
Jean-Charles Gibier
Jean-Charles Gibier wrote:

Est ce que c'est faisable en JS (si oui comment) ?


je n'y suis pas parvenu avec un "bête" :

val.split(//).join("");
qui me retourne comme vous val sans les back-slash.

Ou suis je condamné à modifier le script qui envoie la page ?


je pense que oui, c'est tjs mieux d'opérer à la source...


Bon ben c'est fait.


Avatar
Jean-Charles Gibier
Jean-Charles Gibier wrote:
var val = "C:homeunrepertoireunautreunfichier";



sans vouloir abuser j'aimerai éviter les réponses lapidaires du style
"string.replace() point/barre" ... du moins sans les avoir testées
dans les conditions que j'expose.


Cette dernière phrase me choque pour le moins : vous arrivez ici avec
une question en donnant le minimum d'éléments, et vous vous permettez
d'exiger des réponses testées et adaptées parfaitement à votre besoin ?


Ça c'est bien vrai !
On se demande bien quel peut être l'intéret d'avoir le path d'un fichier
vers un disque-dur de Windows ... ! ?


Sarcasme ou suspicion ?
Parce que dans le cadre d'un paramétrage logiciel par intranet je vous
assure que la question ne se pose même pas.



Avez-vous testé le replace ? Qu'est-ce que cela donne ?


Il n'y a rien à tester :
la valeur d'une variable comme par esemple :
text = "machinntruc";
si innerHTMLée dans un <pre> devrait donner
machin
truc



Voilà.

Dans l'exemple donné aucun des antislash n'est associé à un caractère
spécial, c'est donc le caractère 'normal' qui est retenu.
On pourra faire tous les replace qu'on veut : y a rien à remplacer
sauf peut-être si on a l'antislash en échapé ''
ce qui résoudra d'office le blème.



Et donc ça se règle du côté serveur... ça faisait aussi partie de ma
question.

Et encore une fois : merci au concepteur de Windows ...



Pourquoi Windows ?
C'est un problème (feature, particularité ...) du standard ECMA ça non ?





Avatar
Pierre Goiffon
Jean-Charles Gibier wrote:
Le problème est plus complexe qu'il n'y paraît dans la mesure ou je
voudrais que les antislash's ne soient pas interprétés avant d'être
affectés à val. Je ne sais pas si c'est possible (en fait c'est la
réponse que je souhaite) mais sans vouloir abuser j'aimerai éviter
les réponses lapidaires du style "string.replace() point/barre" ...
du moins sans les avoir testées dans les conditions que j'expose.


Cette dernière phrase me choque pour le moins :
(...)


Je n'exige rien: la formule *sans vouloir abuser* était sincère.


Me voilà rassuré par votre réponse. Merci



Avatar
Pierre Goiffon
Jean-Charles Gibier wrote:
On se demande bien quel peut être l'intéret d'avoir le path d'un
fichier vers un disque-dur de Windows ... ! ?


Sarcasme ou suspicion ?
Parce que dans le cadre d'un paramétrage logiciel par intranet je vous
assure que la question ne se pose même pas.


J'ai entendu dire que les navigateurs Mozilla refusent de suivre un lien
file: depuis une page servie en HTTP... (lu sur f.c.i.w.navigateurs
récemment sous la plume de Pascal Chevrel, et aussi ici par exemple :
http://www.cs.tut.fi/~jkorpela/fileurl.html)

Et j'imagine que IE doit avoir ce genre de limitations aussi (si ce
n'ets la version 6 SP2, alors la 7...) ?


Avatar
ASM

On se demande bien quel peut être l'intéret d'avoir le path d'un
fichier vers un disque-dur de Windows ... ! ?


Sarcasme ou suspicion ?


Certes, mais néanmoins interrogation.
(pourquoi avoir dans un imput le chemin du fichier ?)

Parce que dans le cadre d'un paramétrage logiciel par intranet je vous
assure que la question ne se pose même pas.


sauf à ce que j'y glisse mon Mac ? :-)


Et encore une fois : merci au concepteur de Windows ...


Pourquoi Windows ?


paske c'est bien sous windows qu'on a des paths à anti-slash ?
(du moins si j'ai bien compris, n'ayant pas Windows)
alors que par exemple sur Mac ce sont des slashs.

C'est un problème (feature, particularité ...) du standard ECMA ça non ?


Non c'est un pb côté Windows,
à moins qu'il n'accepte les 2 formats de chemin ?
C:/dossier/fichier
C:dossierfichier

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé


Avatar
ASM

Non c'est un pb côté Windows,
à moins qu'il n'accepte les 2 formats de chemin ?
C:/dossier/fichier
C:dossierfichier


encore que :
file:///C|/W95/Calc.exe.
nous disent-ils ici :
http://www.cs.tut.fi/~jkorpela/fileurl.html


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Jean-Charles Gibier

Non c'est un pb côté Windows,
à moins qu'il n'accepte les 2 formats de chemin ?
C:/dossier/fichier
C:dossierfichier


encore que :
file:///C|/W95/Calc.exe.
nous disent-ils ici :
http://www.cs.tut.fi/~jkorpela/fileurl.html




Si je ne m'abuse l'url file:///C:/machin/truc est la norme pour accéder
à une ressource du système du fichier local. Mon champ input ne sert
qu'à décrire un chemin sur un système. Il ne s'agit pas nécessairement
de Windows d'ailleurs mais quand c'est le cas c'est assez coton à manipuler.


1 2