2012-02-19 74 views
5

試圖刪除正被送回imgUrl的完整URL: 通常返回類似http://localhost/wordpress/wp-content/uploads/filename.jpghttp://localhost/wordpress/wp-content/uploads/images/filename.jpg刪除完整路徑,文件名保持只

我想去掉一切,除了filename.jpg和回報它到 ahng_photos_upload_image。將所有內容剝離到最後一個正斜槓處。 我怎麼用JQuery來做到這一點?

window.send_to_editor = function(html) { 
imgurl = jQuery('img',html).attr('src'); 
jQuery('#ahng_photos_upload_image').val(imgurl); 
tb_remove(); 
} 
+0

txt.substring(txt.lastIndexOf(「/」)+ 1) – 2012-02-19 21:22:33

回答

22

你不需要的jQuery爲,只是普通的舊的JavaScript會做:)

alert('http://localhost/wordpress/wp-content/uploads/filename.jpg'.split('/').pop());​​ 

你的情況:

var filename = imgurl.split('/').pop(); 
+0

工程就像一個魅力。謝謝。我將不得不搜索一下,看看split()和pop()如何工作。 – user1219691 2012-02-19 23:15:37

+0

@nevermind實際上,linux中的路徑是'/'。他們在窗戶裏。但無論如何,這並不重要,因爲我們正在討論的URL總是'/'而不是路徑。 – Andy 2015-08-29 19:53:37

+1

@如果路徑來自一個url,它可能工作,但是當你嘗試上傳一個文件時,輸入的值會是這樣的:「C:\ fakepath \ filename.txt」(在Ubuntu的我的localhost上測試過)鉻)。所以,出於這個原因,我個人更喜歡正則表達式的方式。 – nevermind 2015-08-30 09:24:35

2

你可以爲了使用正則表達式實現此目的。

var file = imgUrl.replace(/^.*[\\\/]/, ''); 

Now該文件將只包含文件名的..

+0

不適合我.... – 2017-07-10 01:56:33

1

如果你是非常有信心的URL沒有像哈希值或參數有趣的東西,這樣的正則表達式將做到這一點:

var filename = imgurl.replace(/^.*\/([^/]*)$/, "$1"); 

另外:不要忘了申報「imgUrl的」與var,你應該可能使用.prop()而不是.attr()如果您的jQuery的版本是1.6或更高版本:

var imgurl = jQuery('img', html).prop('src'); 

也jQuer Ÿ內部轉向功能的雙參數形式到這一點:

var imgurl = jQuery(html).find('img').prop('src'); 

,所以你還不如編寫這種方式。

0

這裏有

var filename = imgurl.split('/').slice(-1); 

祝你好運!

+0

這也適用。謝謝。 – user1219691 2012-02-19 23:45:50

1

一個進一步的選項:

var filename = imgurl.substring(imgurl.lastIndexOf('/') + 1); 

JS Fiddle demo

0

需要注意的是,如果你不知道你是否有向前或向後斜線,你最好使用分離的RE版本:

"path".split(/[\/\\]/).slice(-1) 
0

這裏有一個答案當你的文件名,將工作比如./file。jpg

var extension = fileName.slice((fileName.lastIndexOf(".") - 1 >>> 0) + 2); 
var baseName = fileName.replace(/^.*\/([^/]*)$/, "$1"); 
var path = fileName.replace(/(^.*\/)([^/]*)$/, "$1");