簡體   English   中英

如何可靠地獲取不帶JavaScript后綴的文件名?

[英]How to reliably get the filename without the suffix in javascript?

通過刪除javascript中的后綴來獲取文件名的可靠方法是什么?

我有一個文件,可以說:

http://example.com/uploads/images/a51dd42_thumb.jpghttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM