絶対パスのファイル名の場合: D:Program FilesNotepad Notepad .exe
まず、バックスラッシュのエスケープに関する問題を回避するために、次のように正規表現を使用して、または # を置換できます。
D: #Program Files#Notepad #Notepad .exe
その後、「#」を区切り文字として使用して文字列を配列に分解し、次の配列を取得します:
D: ProgramFiles Notepad Notepad .exe
配列の最後のものを取得します。これは、サフィックスが付いたファイル名です: Notepad .exe
次に、区切り文字として「.」を使用してサフィックス付きのファイル名を配列に分解し、次の配列を取得します:
Notepad exe
そして配列を取得します 最後のものはファイルのサフィックス exe を取得できます
コードは次のとおりです (Win7 IE9 テストに合格しました):
//by MoreWindows (http://www.jb51.net/qq)
function GetExtensionFileName(パスファイル名)
{
var reg = /(\ )/g;
var pfn = パスファイル名.replace(reg, "#");
var arrpfn = pfn.split(" #");
var fn = arrpfn[arrpfn.length - 1] ;
var arrfn = fn.split(".");
return arrfn[arrfn.length - 1];
}
//by MoreWindows (http://www.jb51.net /qq)
function GetExtensionFileName(pathfilename)
{
var reg = /(\ )/g;
var pfn = パスファイル名.replace(reg, "#");
var arrpfn = pfn.split("#");
var fn = arrpfn[arrpfn.length - 1];
var arrfn = fn .split(".");
return arrfn[arrfn.length - 1];
}
テストコード:
function Test()
{
var filePath="D:\Program Files\Notepad \Notepad .exe";
alert(GetExtensionFileName(filePath));
}
function Test()
{
var filePath="D:\Program Files\ Notepad \Notepad .exe";
alert(GetExtensionFileName(filePath));
}
<入力タイプ="button" value="Test" onclick="Test()" />
[テスト] ボタンをクリックすると、exe コンテンツを含むダイアログ ボックスがポップアップ表示され、GetExtensionFileName がファイルを正しく解析できることが示されます。 name を絶対パスで指定し、サフィックス名を取得します。
この方法は Windows プラットフォームでのみ使用できると思いますが、Linux で実行するとどうなるでしょうか。