为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript删除字符串中目录的结尾

Javascript删除字符串中目录的结尾

偶然的你 2021-11-18 20:15:52
我一直在调查,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);这将返回我想要的。但我认为这是糟糕的代码,我认为必须有某种方法可以只使用一行来做到这一点。还有什么其他方法可以做到这一点?
查看完整描述

3 回答

?
Smart猫小萌

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(例如,它是否更比一个长)来处理没有一个的情况。


查看完整回答
反对 回复 2021-11-18
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

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


const str = 'Computers/Hard-drive/5GB/Brand';

const result = str.match(/.*(?=\/[^/]+$)/)[0];

console.log(result);


查看完整回答
反对 回复 2021-11-18
?
慕神8447489

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);


查看完整回答
反对 回复 2021-11-18
  • 3 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信