2014-11-06 8 views
14

chcę użyć następującego ciągu literalnego wewnątrz mojego porywające programu bez konieczności ucieczki backslashy:Groovy: Jak mogę włączyć backslashes wewnątrz łańcucha bez ucieczki?

C:\dev\username

Oto, co starałem dotąd:

String (apostrofów) & GStrings (cudzysłowy)

 
def aString = 'C:\dev\username' 
def aGString = "C:\dev\username" 
  • nie działa, ponieważ \ ma szczególne znaczenie i i y wykorzystywane do ucieczki inne znaki
  • skończę konieczności ucieczki \ z innym \
def s = 'C:\\dev\\username'

Slashy String & Dolar Slashy Smyczkowych

działa dla niektórych ciągów znaków, jak na poniższym

 
def slashy = /C:\windows\system32/ 
def dollarSlashy = $/C:\windows\system32/$

Ale to interpretuje \ u jako mające szczególne znaczenie (następujące nie działa):

def s1 = /C:\dev\username/ 
def s2 = $/C:\dev\username/$
  • Groovy: Nie znaleziono czterocyfrowy kod charakter hex
+0

Nie możesz. '\' miał szczególne znaczenie w Javie i groovy, więc musiałbyś uciec przed nimi. Jeśli jest to ścieżka do a, powinieneś być w stanie użyć ukośników w przód, chociaż –

+0

@tim_yates Dlaczego def slashy =/C: \ windows \ system32/wydaje się wtedy działać? –

+0

Działa na to, że definiuje znak Unicode, jak zauważyłeś: –

Odpowiedz

10

Wow, kolejny haczyka z wprowadzeniem plików ścieżki systemu Windows w Slashy strun. Dobry chwyt. Przedrostek, który napotkałem wcześniej, zawierał końcowy ukośnik odwrotny na ścieżce, np. /C:\path\/, co powoduje błąd o numerze unexpected char: 0xFFFF.

Tak czy inaczej, ze względu na odpowiedź, zważywszy, że ścieżki Windows są wrażliwe na wielkość liter, dlaczego nie wykorzystać go na raz?

def s = /C:\DEV\USERNAME/ 

Sekwencja znaków escape Unicode \u jest wielkość liter.

+0

Dzięki, poszedłem z rozwiązaniem wielkimi literami :) –

+2

Ścieżki systemu Windows są domyślnie skonfigurowane do rozróżniania wielkości liter, ale nie są (tj. Nigdy) nie są znane. Więc jeśli chcemy * stworzyć * katalog o nazwie "nazwa użytkownika", to * musisz * użyć małej litery "... \ nazwa_użytkownika". –

+3

"Nieoczekiwany błąd char: 0xFFFF" nadal jest problemem z Groovy '2.4.10'. Użycie slashy String dolara rozwiązuje problem ala '$/C: \ Path \ To \ Some \ Place \/$' – zero01alpha

Powiązane problemy