2013-11-26 127 views
0

我有一個非常簡單的問題,只是無法讓我的代碼在Java中工作。我想返回一個表示文件路徑的字符串,但是如果它存在,則會提取該路徑的某個部分。從字符串中刪除子字符串

所以,我的輸入可能是「c:/lotus/notes/data/directory/mydatabase.nsf」,我只想返回「directory/mydatabase.nsf」。有時,所提供的路徑已經省去了「c:/ lotus/notes/data /」,因爲它在服務器上而不是本地訪問。

public String getDataPath (String path) { 
    int pathStart; 
    boolean pathContains; 
    String lowerPath; 

    lowerPath = path.toLowerCase(); 
    pathStart = lowerPath.indexOf("c:/lotus/notes/data"); 

    if (pathStart >= 0) { 
     // 20 characters in "c:/lotus/notes/data/" 
     return path.substring(19); 
    } 

    pathContains = lowerPath.contains("lotus/notes/data"); 
    if (pathContains) { 
     // 20 characters in "c:/lotus/notes/data/" 
     return path.substring(19); 
    } 

    return path; 
} 

這很簡單,但不知何故,我不明白。我的兩個人都沒有評價過。

+0

我的問題原來是反斜槓「\」。所以,我需要使用path.replace(「c:\\ lotus \\ notes \\ data \\」,「」);但重要的是我的多行笨重的代碼,也沒有工作縮短到一行。 –

回答

2

保持簡單:

path.replace("c:/lotus/notes/data", ""); 
2

你可以簡單地做一個path.replaceAll("c:/lotus/notes/data", "")。這將刪除前導路徑名稱,如果它包含在字符串中,否則字符串不會更改。

+0

這不是基於正則表達式,所以'.replace()'應該就足夠了。 –