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修飾符用于確保正則表達式不會在找到的第一個數字之后創建匹配項。
添加回答
舉報