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

如何在javascript中获取两个相同字符之间的子字符串?

如何在javascript中获取两个相同字符之间的子字符串?

POPMUISE 2023-11-02 16:51:12
所以我知道如何使用索引或分割方法从 2 个字符中获取子字符串。但我陷入了许多具有相似名称的字符串的情况,例如:   "2020-12-09-name_of_this_mission_num1_mission1_fileName_something"    "2020-12-09-name_of_this_mission_num1_mission12_fileName_something"    "2020-12-09-name_of_this_mission_num23_mission1_fileName_something_else"就像我被困在如何提取“mission#”部分一样,因为有时名称可能不同,所以长度不同,有时名称相同,与文件名相同。我也考虑过使用“_”的索引,但是有多个“_”,如果名称不同,它们可能最终会出现在不同的索引中。有人能给我一些提示吗?
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

如果字符串的结构始终相同 - 并且您想要“mission”的第二个实例 - 则将完整字符串拆分为“mission”的文本。


这将产生一个包含三个部分的数组 - ["2020-12-09-name_of_this_", " num1 ", "1_fileName_something"])


然后获取此部分数组中的最后一项,并从结果字符串的开头获取数字。


然后,您可以在其前面加上删除的“任务”前缀,将其推入一个数组中,这样您就拥有了一系列任务。


如果您的初始字符串不包含“mission”的两个实例,那么您可以将其设置为返回第二个而不是第三个部分,就像我对“mission2”所做的那样。


const  missions =  [

  "2020-12-09-name_of_this_mission_num1_mission1_fileName_something",

  "2020-12-09-name_of_this_mission_num1_mission12_fileName_something",

  "2020-12-09-name_of_this_mission_num23_mission1_fileName_something_else",

  "2020-12-09-name_of_this_mission2_fileName_something_else"

]



let missionsArr = [];


missions.forEach(function(mission) {

  const missionPortions = mission.split('mission');

  let index; 

  

  missionPortions.length == 2

    ? index = 1

    : index = 2

    

  missionsArr.push('mission' + parseInt(missionPortions[index]))

})



console.log(missionsArr); //gives ["mission1","mission12", "mission1", "mission2"];


查看完整回答
反对 回复 2023-11-02
?
三国纷争

TA贡献1804条经验 获得超7个赞

一个简单的正则表达式匹配函数。请注意,“match”输出一个数组,因此推送 match[0]:


const  missions =  [

  "2020-12-09-name_of_this_mission_num1_mission1_fileName_something",

  "2020-12-09-name_of_this_mission_num1_mission12_fileName_something",

  "2020-12-09-name_of_this_mission_num23_mission1_fileName_something_else"

]


let Arr = [];


missions.forEach(function(mission) {

  const missionID = mission.match(/mission\d+/);

  Arr.push(missionID[0]);

})


console.log(Arr);


查看完整回答
反对 回复 2023-11-02
?
心有法竹

TA贡献1866条经验 获得超5个赞

获取任务##的最简单方法是使用正则表达式,假设#是可变的数字位数。


基本正则表达式将匹配后跟至少一个数字的/mission\d+/字符串。"mission"


假设您的输入为:


const missionsTexts = [

  "2020-12-09-name_of_this_mission_num1_mission1_fileName_something",

  "2020-12-09-name_of_this_mission_num1_mission12_fileName_something",

  "2020-12-09-name_of_this_mission_num23_mission1_fileName_something_else"

];

mission#您可以使用以下算法将它们转换为数组:


const missions = missionsTexts.map(missionText => missionText.match(/mission\d+/g)[0]);

请注意,这假设mission#每个任务文本只有一个。该g修饰符用于确保正则表达式不会在找到的第一个数字之后创建匹配项。


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

添加回答

举报

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