2014-05-20 14 views
19
String fname="C:\textfiles\db\query\query.txt"; 

questa è la stringa che ho bisogno di dividerlo.Come dividere una stringa java con la barra retroversa

ho provato con questo

String [] items=fname.split("\"); 

Ma non funziona.

String [] items=fname.split("\\"); also not working... 

come suddividere questa stringa ...

+3

Stop. Stampa 'fname' prima di provare qualcos'altro. È necessario * sfuggire alle barre rovesciate * nella stringa letterale. –

+1

Devi sfuggire '" \ "' quando tra virgolette perché è un carattere speciale. Devi sfuggire '" \ "' nelle espressioni regolari perché è un personaggio speciale. Il risultato è '" \\\\ "'. In ogni caso usa l'oggetto Path e otterrai supporto per Windows e lo stile dei percorsi Posix. – odedsh

risposta

9

funziona.

String fname="C:\\textfiles\\db\\query\\query.txt"; 
     String split[] = fname.split("\\\\"); 
     System.out.println(" :: value " + split[0]); 
+1

org.apache.commons.lang3.StringUtils.split (fname, "\\") fa il lavoro –

39

Prima di tutto non si può avere una stringa come hai postato in questione

String fname="C:\textfiles\db\query\query.txt"; 

questo dovrebbe essere sostituito da

String fname="C:\\textfiles\\db\\query\\query.txt"; 

come backslash ("\") ha bisogno di una via di fuga anche.

Infine, è necessario fare qualcosa di simile a dividerli:

String fname="C:\\textfiles\\db\\query\\query.txt"; 
String[] items= fname.split("\\\\"); 
System.out.println(Arrays.toString(items)); 

Spero che questo aiuti.

+0

Funziona :) grazie mille –

0
public static String[] splitPath (String path) { 
    String backslash = ((char)92) + ""; 
    if (path.contains(backslash)) { 
     ArrayList<String> parts = new ArrayList<>(); 
     int start = 0; 
     int end = 0; 
     for (int c : path.toCharArray()) { 
      if (c == 92) { 
       parts.add(path.substring(start, end)); 
       start = end + 1; 
      } 
      end++; 
     } 
     parts.add(path.substring(start)); 
     return parts.toArray(new String[parts.size()]); 
    } 
    return path.split("/"); 
} 
+1

Un approccio interessante alla soluzione di un problema che non è quello richiesto qui. –

+0

Penso che l'autore abbia chiesto perché il suo uso della funzione String.Split non funzioni non per l'implementazione dell'algoritmo split. –

+0

è assolutamente una soluzione per il problema precedente ("come dividere questa stringa ..."). quelle risposte che dicevano che non si può avere una stringa con una barra rovesciata sono sbagliate. il mio esempio mostra anche come creare una stringa con un backslash. stavo correndo nel problema su Android e questa è la soluzione rapida che risolve il problema di divisione per me. la funzione built in string.split() fallirà per quei casi in un modo strano (eccezione regex interna) – Philipp

-2

Utilizzare l'espressione regolare per sfuggire al carattere. "String" .split ("\ /");

+1

che non è una risposta alla domanda. Hai provato a farlo da solo? –

0
**//single slash already used as space in java 
// suppose it would be Object Type obj="C:\textfiles\db\query\query.txt";** 

public static void main(String[] args) { 
String target="\\"; 
String replacement="\\\\"; 
String str=(String) obj; 
str=str.replace(target, replacement); 
String[] strarray=str.split(replacement); 
String filename=strarray[8]; 
System.out.println("file Name: "+filename); 
} 
5

'split' si aspetta RegEx. Il modo migliore per usare split è usare "Pattern.quote"

String separator = "\\"; 
String value = "C:\\Main\\text.txt"; 
String[] arrValues = value.split(Pattern.quote(separator)); 
+1

ottima risposta. Breve e dritto al punto – user2407334

Problemi correlati