3 回答
TA贡献1911条经验 获得超7个赞
你有很多选择。
正则表达式方法
该lastIndexOf方法
该split/join方法
我个人更喜欢#2 提供的简单性和没有不必要的中间对象。
1.正则表达式方法
...如CertainPerformance 所示或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);
请注意,以上假设会有一个斜线。不要做这样的假设,你需要添加一个后卫的情况下index是-1:
let str = "Computers/Hard-drive/5GB/Brand";
let index = str.lastIndexOf("/");
if (index !== -1) {
str = str.substring(0, index);
}
console.log(str);
str = "Computers";
index = str.lastIndexOf("/");
if (index !== -1) {
str = str.substring(0, index);
}
console.log(str);
3.split与join方法
...如尼娜所示。(当我看到她的时删除了我的,它更简洁而不难以阅读。)请注意,Nina 的实现还假设会有斜杠,您需要检查结果split(例如,它是否更比一个长)来处理没有一个的情况。
TA贡献2041条经验 获得超4个赞
一种选择是使用正则表达式:匹配字符直到先行匹配/,然后是非/字符,然后是字符串的结尾:
const str = 'Computers/Hard-drive/5GB/Brand';
const result = str.match(/.*(?=\/[^/]+$)/)[0];
console.log(result);
TA贡献1780条经验 获得超1个赞
你可以试试String.prototype.lastIndexOf()和String.prototype.substring()
var directory = 'Computers/Hard-drive/5GB/Brand'
var pos = directory.lastIndexOf("/");
var result = directory.substring(0, pos);
console.log(result);
添加回答
举报