我一直在研究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);
这将返回我想要的。但是我认为这是不好的代码,我认为必须有某种方法可以只使用一行。还有什么其他方法可以做到这一点?
您可以分割,切片直到最后一个项目之前的项目,并将数组连接到字符串。
var string = 'Computers/Hard-drive/5GB/Brand',
result = string.split('/').slice(0, -1).join('/');
console.log(result);
一种选择是使用正则表达式:匹配字符,直到先行匹配/
,然后再匹配非/
字符,然后再字符串的末尾:
const str = 'Computers/Hard-drive/5GB/Brand';
const result = str.match(/.*(?=\/[^/]+$)/)[0];
console.log(result);
您有很多选择。
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。有split
和join
方法:
let str = "Computers/Hard-drive/5GB/Brand";
str = str.split("/");
str.pop();
str = str.join("/");
console.log(str);
我个人更喜欢#2提供的简单性和缺乏不必要的中间对象。
您可以尝试使用lastIndexOf()
和substring()
var directory = 'Computers/Hard-drive/5GB/Brand'
var pos = directory.lastIndexOf("/");
var result = directory.substring(0, pos);
console.log(result);