Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理文件夹路径并在单行中处理尾部斜杠?_Javascript_String - Fatal编程技术网

Javascript 处理文件夹路径并在单行中处理尾部斜杠?

Javascript 处理文件夹路径并在单行中处理尾部斜杠?,javascript,string,Javascript,String,此代码接受path/to/folder或path/to/folder/(注意后面的斜杠)并提取字符串中最后一个文件夹的名称,即: path = 'path/to/folder'.split('/'); folder = path.pop() || path.pop(); // taking care of trailing slash // folder == 'folder' 我很好奇,有没有可能把这个变成一个班轮?我将感谢正则表达式和非正则表达式的回答:) 作为旁注,我刚刚意识到我的代码

此代码接受
path/to/folder
path/to/folder/
(注意后面的斜杠)并提取字符串中最后一个文件夹的名称,即:

path = 'path/to/folder'.split('/');
folder = path.pop() || path.pop(); // taking care of trailing slash

// folder == 'folder'
我很好奇,有没有可能把这个变成一个班轮?我将感谢正则表达式和非正则表达式的回答:)

作为旁注,我刚刚意识到我的代码不知道如何处理多个尾随斜杠(比如打字错误)——所以如果您也能考虑到这一点,我将不胜感激


编辑:我真的希望看到一个非正则表达式的答案

我想这就是你想要的:

path = 'path/to/folder';
folder = path.match(/\/([^\/]+)[\/]*$/)[1]

应该使用或不使用尾部斜杠,也可以使用两个斜杠。

在现代浏览器中,您可以执行以下操作:

folder = (path + '/').split(/\/+|\\+/).slice(0, path.split(/\/+|\\+/).indexOf(''));

代码还处理反斜杠,甚至与斜杠混合使用。一个简单的.p>
文件夹=path.split('/').slice(0,path.split('/').indexOf(''),但这只适用于现代浏览器。聪明-为什么不把它作为一个答案添加?简洁:)让我们把它提高一个档次。假设这段代码应该在Windows和Unix机器上运行-您如何处理不同的斜杠?我想我会找到类似于python的os.path.normpath的东西,或者在进行匹配()之前将“\”替换为“/”:)我们确实有Node.js
path
library。但更大的问题是它能在一行中完成吗不是很重要-我喜欢学习其他做事的方法。它让我熟悉了解决问题的其他态度,当然也扩展了我对JS的了解。最近我一直在说一句俏皮话。这就是挑战!顺便说一句,通过这种方式,您可以使用任意数量的冗余斜杠:
(path++'/').split(/\/+\\+/).slice(0,path.split(/\/+\\\+/).indexOf(“”))@pilau当然。。。我已经在我的答案中添加了
+
s,以供将来的访问者使用,如果可以的话?是的,当然可以!我也会把它标记为正确答案。。。看起来我不会很快得到任何非正则表达式的答案。。。为最佳解决方案干杯:)