[英]How to reliably get the filename without the suffix in javascript?
通過刪除javascript中的后綴來獲取文件名的可靠方法是什么?
我有一個文件,可以說:
http://example.com/uploads/images/a51dd42_thumb.jpg和http://example.com/uploads/images/a51dd42_s.jpg
現在我想獲取字符串http://example.com/uploads/images/a51dd42.jpg
replace()函數不是我想要的,因為圖像文件名可能具有許多不同類型的后綴
也許正則表達式是最好的?
如果是,那么可靠的代碼是什么?
提前致謝
replace
函數可能就是您想要的,它可以接受正則表達式作為搜索模式:
url = url.replace(/_[^\/]+(\.[^\/]*)$/, "$1");
該表達式的作用: Regex101上的示例
尋找一個不帶斜杠的_
(因此,我們只查看路徑中的最后一段)。
允許在_
之后使用任意數量的非斜杠字符。
停止匹配最后一個.
它發現后跟零個或多個字符(我假設這些字符始終帶有擴展名); 捕獲.
以及其后的字符(例如擴展名)。
用代替整體比賽.
以及后續的擴展。 (替換字符串中的$1
是特殊的,它表示“使用第一個捕獲組的值。”
如果您的路徑可能帶有或不帶有擴展名,只需添加一個?
在正則表達式末尾附近,就在$
:/ /_[^\\/]+(\\.[^\\/]*)?$/
( /_[^\\/]+(\\.[^\\/]*)?$/
$
/ /_[^\\/]+(\\.[^\\/]*)?$/
(這使得捕獲組中的所有內容都是可選的)。
示例: 實時復制
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
<style>
body {
font-family: monospace;
}
</style>
</head>
<body>
<script>
(function() {
"use strict";
test("http://example.com/uploads/images/a51dd42_thumb.jpg");
test("http://example.com/uploads/images/a51dd42_s.jpg");
function test(url) {
display("Before: " + url);
url = url.replace(/_[^\/]+(\.[^\/]*)$/, "$1");
display("After: " + url);
}
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
</script>
</body>
</html>
您可以使用:
var s = 'http://example.com/uploads/images/a51dd42_thumb.jpg';
var r = s.replace(/^(.+?)_[^.]+(\.[^\/.]+)$/i, '$1$2');
//=> http://example.com/uploads/images/a51dd42.jpg
輕松拆分
var start = Filename.split('_')[0],
file = Filename.split('_')[1],
end = file.split('.')[1];
console.log(start + '.' + end);
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.