Javascript删除字符串末尾的目录

问题描述 投票:0回答:1

我一直在研究split(), slice(), substring(),但我不确定他们是否可以满足我的要求。

基本上我想删除字符串的最后一个子目录以进行说明:

Computers/Hard-drive/5GB/Brand

我需要能够将Brand移到类似Computers/Hard-drive/5GB的位置

我的解决方法是

var val = directory.split("/");
var result;
val.forEach(function (dir) {
     result = result+"/"+dir;
});
console.log(result);

这将返回我想要的。但是我认为这是不好的代码,我认为必须有某种方法可以只使用一行。还有什么其他方法可以做到这一点?

javascript
1个回答
1
投票

您可以分割,切片直到最后一个项目之前的项目,并将数组连接到字符串。

var string = 'Computers/Hard-drive/5GB/Brand',
    result = string.split('/').slice(0, -1).join('/');

console.log(result);

0
投票

一种选择是使用正则表达式:匹配字符,直到先行匹配/,然后再匹配非/字符,然后再字符串的末尾:

const str = 'Computers/Hard-drive/5GB/Brand';
const result = str.match(/.*(?=\/[^/]+$)/)[0];
console.log(result);

0
投票

您有很多选择。

1。有一种正则表达式方法,如SomePerformance所示或使用replace替换最后一个/之后的所有字符的版本。

let str = "Computers/Hard-drive/5GB/Brand";
str = str.replace(/\/[^\/]+$/, "");
console.log(str);

2。有lastIndexOf版本:

let str = "Computers/Hard-drive/5GB/Brand";
const index = str.lastIndexOf("/");
str = str.substring(0, index);
console.log(str);

3。有splitjoin方法:

let str = "Computers/Hard-drive/5GB/Brand";
str = str.split("/");
str.pop();
str = str.join("/");
console.log(str);

我个人更喜欢#2提供的简单性和缺乏不必要的中间对象。


0
投票

您可以尝试使用lastIndexOf()substring()

var directory = 'Computers/Hard-drive/5GB/Brand'
var pos = directory.lastIndexOf("/");
var result = directory.substring(0, pos);
console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.