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

這是我需要拆分它的字符串。如何在反斜線中拆分java字符串

我試着用這個

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

但不工作。

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

如何拆分此字符串...

+3

Stop。在你嘗試別的之前打印出'fname'。您需要*在字符串文字中轉義反斜槓*。 –

+1

因爲它是一個特殊字符,所以在引號中你必須轉義'「\」'。您必須在正則表達式中轉義'「\」',因爲它是一個特殊字符。結果是'「\\\\」'。 無論如何使用Path對象,您將獲得對windows和Posix風格路徑的支持。 – odedsh

回答

9

它的工作原理。

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,「\\」)做這個工作 –

39

首先,你不能有一個字符串作爲你的問題發佈

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

這應該由

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

的反斜線被替換(「\」)需要一個逃生以及。

最後,你需要做這樣的事情分裂他們:

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

希望這有助於。

+0

它工作:)謝謝你 –

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

一個有趣的方法來解決一個問題,這不是一個問題在這裏。 –

+0

我認爲作者問他爲什麼使用String.Split函數不適用於分割算法實現。 –

+0

這絕對是解決上述問題的方法(「如何拆分這個字符串......」)。那些說你不能有反斜槓字符串的答案是錯誤的。我的例子甚至展示瞭如何用反斜槓創建一個字符串。我遇到了Android上的問題,這是爲我解決分裂問題的快速解決方案。內置的string.split()函數會以奇怪的方式失敗(內部正則表達式異常) – Philipp

-2

使用正則表達式來轉義字符。 「字符串」 .split( 「\ /」);

+1

這不是問題的答案。你嘗試過自己運行嗎? –

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'預計RegEx。 使用分割的最佳方法是使用「Pattern.quote」

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

很好的答案。簡明扼要 – user2407334