在 C++ 程序中从字符串中查找不同年份的总数

c++server side programmingprogramming

在本教程中,我们将编写一个程序来查找给定字符串中的不同年份。让我们看一些例子。我们假设日期格式为 DD/MM/YYYY

输入 − 示例,日期为 01/11/2020、02/12/2020 和 03/10/2019。

输出 − 2

给定的文本中有两个不同的年份 2020 和 2019。

我们将使用正则表达式从给定的字符串中提取所有日期。如果您不熟悉 C++ 中的正则表达式,请阅读本教程。

让我们开始解决问题。

  • 初始化文本。

  • 编写正则表达式以从文本中提取日期。

  • 初始化一个空的无序集。

  • 遍历日期并将年份添加到无序集以查找唯一年份。

  • 打印集合的长度。

示例

让我们看看代码。

#include <iostream>
#include <bits/stdc++.h>
#include <regex>
using namespace std;
int uniqueYearsCount(string text) {
   // 正则表达式
   regex date_regex("[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}");
   smatch matching_date;
   // 设置为存储唯一日期
   unordered_set<string> dates;
   // 查找所有日期
   while (regex_search(text, matching_date, date_regex)) {
      string date = matching_date[0];
      dates.insert(date.substr(date.size() - 4));
      text = matching_date.suffix();
   }
   return dates.size();
}
int main() {
   string text = "Sample example with dates 01/11/2020, 02/12/2020, and 03/10/2019.";
   cout << uniqueYearsCount(text) << endl;
   return 0;
}

输出

如果运行上述代码,您将获得以下结果。

2

我们可以获取不同格式的日期。如果您获取不同格式的日期,请适当更新正则表达式。


相关文章