2010-04-20 10 views
81

Domanda veloce. Esiste un equivalente di @ applicato alle stringhe in Java:Equivalente Java delle stringhe letterali di C# con @

Ad esempio, posso eseguire @"c:\afolder\afile" in C# e fare in modo che ignori i caratteri di escape durante l'elaborazione invece di dover eseguire "c:\\afolder\\aFile". Esiste un equivalente Java?

hmmm: stackoverflow è in fuga su di me .. lol. Il secondo esempio dovrebbe contenere:

c: (a doppia barra rovesciata) afolder (doppia barra rovesciata) aFile

+2

Possibile duplicato di: http://stackoverflow.com/questions/2018556/does-java-have-the-character-to-escape-string-quotes-diventa/2018583#2018583 – codaddict

+2

Ha preso la libertà di chiarire il titolo poiché ' @ 'può essere usato per usare anche le parole chiave della lingua come identificatori. – Joey

+0

@unicornaddict: in effetti è la stessa domanda. Le scuse non l'hanno visto durante la ricerca. @ Johannes - buona mossa .. grazie –

risposta

63

No. Sfuggire/esternalizzare la stringa è la tua unica scelta.

+0

mi piace C# 6 con @ "stringa" e $ "stringa {i}" e molto futuro più di java –

13

Come hanno detto Kent e Jon, no non c'è.

Sto rispondendo solo per sottolineare che anche se ci fosse, per il tuo caso particolare, sarebbe una cattiva idea nel caso generale, assumendo un programma più che una tantum.

I programmi Java funzionano su più piattaforme rispetto a Windows e altre piattaforme hanno delimitatori di file diversi. Così, invece di trattare con backslash sfuggiti, il modo corretto di gestire il vostro esempio particolare è ottenendo la proprietà separatore di file:


    String sep = System.getProperty("file.separator"); 
    String filename = ROOTDIR + sep + "folder" + sep + "afile"; 

Dove avreste creato separatamente ROOTDIR sulla base di qualche politica - non solo la piattaforma, ma se vuoi che il tuo "afile" sia relativo alla radice del file system attuale o alla directory home dell'utente.

Ma sicuramente, l'uso della proprietà separatore di file rende i programmi più largamente utilizzabili. È più lavoro? Sì. Come dice Wanda Sykes, "Ma ne vale la pena".

+1

Hiya e grazie. il fatto che sia un "nome di file" nel mio caso in una sorta di irrilevante. Tutto quello che il mio codice sta facendo è prendere una stringa (o provarci) e trasmetterla. In realtà non faccio nulla con esso oltre a trasmetterlo a un servizio web. Stavo testando la risposta da un servizio WCF C# chiamato da Java. Poiché stavo appena scrivendo un test, è stato a questo punto che ho scoperto questa limitazione. Non sto facendo nulla di "basato su file" con la stringa. –