Potřeboval jsem analyzovat řetězec bez jasného oddělovače kromě konkrétního data, takže jsem vytvořil tuto funkci, abych rozdělil řetězec na základě formátu data (M/D/RR, MM/DD/RRRR) v řetězci, takže jsem pak bych mohl přidat svůj vlastní oddělovač a poté jej rozdělit do pole.
function getStringArrayByDateFormat(str, pattern) {
const DELIMITER = '~';
let m, updatedText = str;
let uniqueMatches = [];
while ((m = pattern.exec(str)) !== null) {
if (m.index === pattern.lastIndex) {
pattern.lastIndex++;
}
m.forEach((match, groupIndex) => {
if (!uniqueMatches.includes(match)) {
uniqueMatches.push(match);
}
});
}
uniqueMatches.forEach((item) => {
const regex = new RegExp(`${item}`, 'g');
updatedText = updatedText.replace(regex, `${DELIMITER}${item}`);
})
const list = updatedText.split(DELIMITER).filter((s) => s.length > 0);
console.log(list);
}
Abych to nazval
const DATE_PATTERN = /\d{1,2}\/\d{1,2}\/\d{2,4}/g;
const textToSplit = `3/22/2022: This is a test comment 1 3/25/2022: This is a test comment 2 3/26/2022: This is a test comment 3 3/27/2022: This is a test comment 4`;
getStringArrayByDateFormat(textToSplit, DATE_PATTERN);
Po spuštění tohoto skriptu získáme následující pole, přes které můžeme zacyklit a vykreslit na obrazovce.
[
"3/22/2022: This is a test comment 1 ",
"3/25/2022: This is a test comment 2 ",
"3/26/2022: This is a test comment 3 ",
"3/27/2022: This is a test comment 4"
]
Tady jsou housle.