2017-09-14 1 views
0

Lorsque j'utilise le chemin suivant dans Eclipse:Pourquoi un chemin a besoin de deux barres obliques (\) dans Eclipse?

"C:\Users\Me\Desktop\selenium\geckodriver.exe" 

Il y a un x rouge apparaît avec un message qu'il ya une erreur. Mais quand je le change en:

"C:\\Users\\Me\\Desktop\\selenium\\geckodriver.exe" 

Tout va bien. Quelqu'un peut-il expliquer, pourquoi est-ce? Dois-je toujours ajouter des barres obliques supplémentaires dans un chemin?

+0

vos exemples sont identiques. – scsimon

+0

non, j'ai utilisé deux barres obliques, mais stackoverflow ne montre automatiquement qu'une barre oblique – Suppe

Répondre

2

Car le caractère \ a une signification spéciale en Java. C'est un personnage d'échappement. Par exemple si vous écrivez \t à l'intérieur d'un littéral de chaîne, cela signifie un tabulateur, et \n signifie un saut de ligne.

Pour avoir un caractère littéral \, vous devez lui échapper avec le caractère d'échappement: \\. Voir la section Escape Sequences dans la documentation Java. Ce qui précède est également vrai pour beaucoup d'autres langues.

1

Même dans Eclipse et Netbeans, lorsque vous tapez une chaîne, ils vérifient si cette chaîne correspond à regex pattern. Une seule barre oblique \ indique que le prochain caractère sera une correspondance regex ou une lettre littérale, un nombre ou tout ce que vous voulez. Le but d'utiliser les doubles barres obliques \\, est d'indiquer que vous voulez une barre oblique littérale.

Alors, quand ils Copile votre chaîne saisie:

C:\\path\\to\\exe

volonté est devenu

C:\path\to\exe

3

Dans la plupart des langages de programmation '\' est utilisé comme caractère d'échappement.

Exemples:

"c:\\Users" sera "c:\Users"
"My name is \"Suppe\"" sera "My name is "Suppe""
"Hello\tWorld" sera "Hello World"

Pour plus d'informations sur ce sujet, vous devriez lire:
https://en.wikipedia.org/wiki/Escape_character

utilisations Même StackExchange antislashs comme caractères d'échappement. Vous avez probablement remarqué que la première version de votre message avait 2 exemples identiques.