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"];
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);
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修饰符用于确保正则表达式不会在找到的第一个数字之后创建匹配项。
添加回答
举报