首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript在字符串中删除目录的末尾

Javascript在字符串中删除目录的末尾
EN

Stack Overflow用户
提问于 2019-10-13 10:28:40
回答 4查看 119关注 0票数 0

我一直在调查split(), slice(), substring(),但我不确定他们能做我想要的事情。

基本上,我希望删除字符串的最后一个子目录,以供参考:

代码语言:javascript
运行
复制
Computers/Hard-drive/5GB/Brand

我需要能够将Brand移出类似于Computers/Hard-drive/5GB的东西

我的解决办法是

代码语言:javascript
运行
复制
var val = directory.split("/");
var result;
val.forEach(function (dir) {
     result = result+"/"+dir;
});
console.log(result);

这是我想要的。但我认为这是错误的代码,我认为一定有某种方法来做到这一点,只使用一行。其他的方法是什么呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-13 10:35:49

你有很多选择。

  1. 正则表达式方法
  2. lastIndexOf approach
  3. split/join方法

G 210

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

1.正则表达式方法

...either as shown by CertainPerformance或使用replace替换上一个/之后的所有字符的版本。

代码语言:javascript
运行
复制
let str = "Computers/Hard-drive/5GB/Brand";
str = str.replace(/\/[^\/]+$/, "");
console.log(str);

如果没有斜杠,它就能正常工作;它只是返回字符串,没有变化。

2. lastIndexOf版本

代码语言:javascript
运行
复制
let str = "Computers/Hard-drive/5GB/Brand";
const index = str.lastIndexOf("/");
str = str.substring(0, index);
console.log(str);

请注意,上面假设会有一个斜杠。为了不做这个假设,您需要添加一个保护,以防index-1

代码语言:javascript
运行
复制
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. splitjoin方法

.as shown by Nina(当我看到她的书时,我把它拿走了,它简洁得多,而且读起来并不难。)注意,Nina的实现还假定会有一个斜杠,您需要检查split的结果(例如,是否有多个长)来处理没有的情况。

票数 2
EN

Stack Overflow用户

发布于 2019-10-13 10:31:12

一个选项是使用正则表达式:匹配字符,直到/匹配为止,然后是非/字符,然后是字符串的末尾:

代码语言:javascript
运行
复制
const str = 'Computers/Hard-drive/5GB/Brand';
const result = str.match(/.*(?=\/[^/]+$)/)[0];
console.log(result);

票数 2
EN

Stack Overflow用户

发布于 2019-10-13 10:36:01

您可以尝试使用和

代码语言:javascript
运行
复制
var directory = 'Computers/Hard-drive/5GB/Brand'
var pos = directory.lastIndexOf("/");
var result = directory.substring(0, pos);
console.log(result);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58362697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档