I have a text with Shamsi date like this:
Pathology report on 01.09.1402 (22.11.2023): Baso-squamous carcinoma in right thigh skin.
Surgical pathology report on 30.03.1403, Multiple lymphoid tissue involved by metastatic epithelial tumor of right inguinal mass.
I want to extract all the dates in an array.
How would you do that?
So far we have this:
const text = `Pathology report on 01.09.1402: Baso-squamous carcinoma in right thigh skin. Surgical pathology report on 30.03.1403, Multiple lymphoid tissue involved by metastatic epithelial tumor of right inguinal mass.`
console.log(getDate(text));
function getDate(d) {
var day, month, year;
result = d.match("[0-9]{2}([-/ .])[0-9]{2}[-/ .][0-9]{4}");
if (null != result) {
dateSplitted = result[0].split(result[1]);
day = dateSplitted[0];
month = dateSplitted[1];
year = dateSplitted[2];
}
result = d.match("[0-9]{4}([-/ .])[0-9]{2}[-/ .][0-9]{2}");
if (null != result) {
dateSplitted = result[0].split(result[1]);
day = dateSplitted[2];
month = dateSplitted[1];
year = dateSplitted[0];
}
if (month > 12) {
aux = day;
day = month;
month = aux;
}
return `${day}.${month}.${year}`;
}
3
Answers
First you need to have actual dates. 1402 is not a proper (Shamsi) year
Then you need to loop to get all of them
So when you want to extract information from a text, and it follows a certain pattern using
regex
expression, makes sense.So what I have done is create an array called
dates
so I can use it to store the information you want which is thedate
.Then I look at the regex docs to create a regex_pattern which matches your text, I called it
regex
not a good name you might need to change itthe
regex.exec(interesting_date)
is used to find eachdate match
within the string you provided. Then we just simplyreturn dates
:I have provided a code snippet which also takes care of date and month
The final result is this:
The easiest way to achieve this would be calling
String.prototype.match
with a global (g
) match on the following pattern:d{2}.d{2}.d{4}
.I separated the extraction from the formatting so that they are not coupled.