我試圖刪除從C#創建一個路徑的文件名(使用使用Server.Mappath,它默認使用\\
),如:替換Windows中的文件名「\」路徑
C:\\Foo\\Bar\\Baz\\file.js
我現在的正則表達式看起來稍微工作在RegExr但在實際應用中它的工作原理正好相反方式:
\/[^\\]+$
我缺少什麼?
我試圖刪除從C#創建一個路徑的文件名(使用使用Server.Mappath,它默認使用\\
),如:替換Windows中的文件名「\」路徑
C:\\Foo\\Bar\\Baz\\file.js
我現在的正則表達式看起來稍微工作在RegExr但在實際應用中它的工作原理正好相反方式:
\/[^\\]+$
我缺少什麼?
既然你在JS這樣做只是做一個String.split
操作。
var path = "C:\\Foo\\Bar\\Baz\\file.js";
var separator = "\\";
function getFilenameFromPath(path, separator){
var segmented = path.split(separator);
return segmented[segmented.length-1];
}
console.log(getFilename(path, separator));
順便說一句,唯一錯了你原來的正則表達式是領先\和失蹤/
/[^\\]+$/
指甲會它。 (上@JDwyers尾隨/g
答案是使它成爲一個全球性的比賽,這是 冗餘您的使用情況。)
所以......
path.match(/[^\\]+$/); // == "file.js"
乾杯
你爲什麼使用正則表達式呢?這是矯枉過正的時候,提供了這樣做的Path
類的函數:
string dirName = Path.GetDirectoryName(filename);
也有在Path類相似的功能來提取文件名,擴展名,路徑根等
,因爲我正在用phantomjs文件中的javascript刪除文件名,而且我不能在早期完成。 –
你的意思是...你試圖刪除JavaScript中的文件名?如果是這樣,那麼這個問題應該被標記爲JavaScript,而不是c#。否則,我完全沒有跟着你。 –
既然你想要的目錄路徑,通過刪除文件名,從而:
var path = "C:\\Foo\\Bar\\Baz\\file.js";
var separator = "\\"; // make it OS agnostic.
var result="";
function getFilename(path, separator){
var segmented = path.split(separator);
for(var i=0; i<segmented.length-1;i++)
{
result+=segmented[i]+"\\\\";
}
return result;
}
alert(getFilename(path, separator));
嘗試正確標記問題。 – ocodo