2015-09-29 64 views
0

我有一條路徑'app/resources/main/assets/templates/path/to/template',從路徑中始終刪除'app/resources/main/assets/templates'的最佳方式是什麼,只留下'path/to/template'?目前我使用的剪接和採用分體式參加的最後5名陣列的項目,但我可能有一些實例所在的路徑可能會更長,所以我想確實能夠隨時刪除'app/resources/main/assets/templates'始終刪除文件路徑的某個部分?

我的版本

var path = 'app/resources/main/assets/templates/path/to/template'; 
path.split('/').splice(-5, 5).join('/'); 

,但不是很大,如果path = 'app/resources/main/assets/templates/path/to/subfolder/template' //want only path/to/subfolder/template

+0

刪除前5個? – Barmar

回答

1

只是一個不同的角度用正則表達式:

console.log(/templates\/(.*)/.exec(path)[1]); 

翻譯:去,直到找到 「模板」,後發現捕獲的一切時。

爲了讓前面的文件夾藏漢:

var newPaths = /(.*)templates(.*)/.exec(path); 
console.log(newPaths[1] + 'templates'); 
console.log('templates' + newPaths[2]); 
+0

這真的很棒! – styler

+0

所以這輸出/應用程序/資源/主要/資產/模板,我將如何刪除該開始/? – styler

+0

@styler更新,增加'\ /'刪除斜槓。在引用單個字符時,請使用代碼標籤('/')或字符的字面名稱,這更容易理解。 – Kriggs

1

可以存儲基本路徑變量,然後替換它在你想要的每個路徑,像這樣

var BASE_PATH = 'app/resources/main/assets/templates'; 
 
var path = 'app/resources/main/assets/templates/path/to/template'; 
 
var result = path.replace(BASE_PATH, ''); 
 

 
console.log(result);

0

在相同的趨勢Kriggs答案。如果你想要隔離的圖案總是以path/開頭,你可以像這樣子串字符串

var path = 'app/resources/main/assets/templates/path/to/template'; 
var pattern = /path\//; 
var FirstOccurrence = path.search(pattern); 
path = path.substring(FirstOccurrence,path.length); 
console.log(path);