2012-02-19 77 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");