Javascript 正在寻找从字符串中提取未知子字符串的最简单方法。(用斜杠分隔的术语)
初始字符串:Javascript 正在寻找从字符串中提取未知子字符串的最简单方法。(用斜杠分隔的术语),javascript,string,substring,Javascript,String,Substring,初始字符串: initString='/digital/collection/music/bunch/of/other/stuff' 我想要什么:音乐 具体地说,我想要任何介于collection/和/bunch 我该怎么办: if(initString.includes('/digital/collection/')){ 让slicedString=initString.slice(19);//结果为“music/bunch/of/other/stuff” 让indexOfSlash=s
initString='/digital/collection/music/bunch/of/other/stuff'
我想要什么:音乐
- 具体地说,我想要任何介于
和collection/
/bunch
if(initString.includes('/digital/collection/')){
让slicedString=initString.slice(19);//结果为“music/bunch/of/other/stuff”
让indexOfSlash=slicedString.indexOf(“/”);//在本例中,结果为5
让desiredString=slicedString.slice(0,indexOfSlash);//结果为“music”
}
问题:
我该如何以更优雅的方式在javascript中实现这一点
- 我寻找类似于
的东西来代替我的硬编码endIndexOf()
.slice(19)
不是我要找的,因为我希望索引位于子字符串的第一个实例的末尾lastIndexOf()
/digital/collection/
- 我希望减少行数,但找不到类似于
.getStringBevering('beginCutoff,EndCuttoff')的代码。
提前谢谢你 如果路径始终相同,并且所需字段位于第三个
/
之后,则可以使用split
var initString = '/digital/collection/music/bunch/of/other/stuff';
var collection = initString.split("/")[2]; // third index
在现实世界中,在使用索引之前,首先要检查它是否存在
var collections = initString.split("/");
var collection = "";
if (collections.length > 2) {
collection = collections[2];
}
您可以使用
constdesiredstring=initString.slice(19,24)代码>如果你一直在寻找音乐。从逻辑上考虑这个问题:“结束索引”只是“开始索引”加上子字符串的长度,对吗?所以这样做:)
从子字符串的结尾到整个字符串的结尾;您始终可以在/
处拆分,并使用索引0从剩余的目录名中仅获取第一个目录名。如果您需要查找“/digital/collection/”之后的下一个路径参数,而不管“/digital/collection/”位于路径中的何处
首先使用split获取路径数组
然后使用find返回前两个元素分别为digital和collection的元素
const initString='/digital/collection/music/bunch/of/other/stuff'
常量pathArray=initString.split(“/”)
常量路径=pathArray.length>=3
? pathArray.find((elm,index)=>pathArray[index-2]==='digital'和&pathArray[index-1]=='collection')
:“路径太短”
console.log(path)
也可以使用正则表达式
const initString='/digital/collection/music/bunch/of/other/stuff';
const result=initString.match(/\/digital\/collection\/([a-zA-Z]+)\/)[1];
控制台日志(结果);
控制台输出为:
音乐
您的标题是“index”,但您的示例显示您想要返回字符串。如果实际上您想要返回字符串,请尝试以下操作:
if(initString.includes('/digital/collection/')) {
var components = initString.split('/');
return components[3];
}
如果您知道初始字符串,并且在您搜索的字符串之前有一部分,那么下面的代码段将返回您搜索的字符串。你不需要计算指数,或者类似的东西
//获取searchString的最后一个索引
//我们应该得到:音乐
const initString='/digital/collection/music/bunch/of/other/stuff'
const firstPart='/digital/collection/'
常量lastIndexOf=(s1,s2)=>{
返回s1。替换(s2),。拆分('/')[0]
}
console.log(lastIndexOf(initString,firstPart))
请询问您想要得到什么(音乐?、索引?)以及原因。音乐所在的术语将发生变化,可能还包括数字,因此很遗憾,这不起作用。。谢谢你!这正是我想要的,尽管我相信您需要.split('/')[3]
。(第四个索引)。我在/digital/collection/music/bunch
上使用第三个索引进行了测试,结果是收藏
。非常感谢你!!!谢谢你纠正我!你说得对,因为我肯定在找绳子。我已经编辑了标题以适合这个问题。
if(initString.includes('/digital/collection/')) {
var components = initString.split('/');
return components[3];
}