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


在本教程中,我们将编写一个程序来查找给定字符串中不同的年份。让我们看一些例子。我们假设日期格式为 **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
   regex date_regex("[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}");
   smatch matching_date;
   // set to store unique dates
   unordered_set<string> dates;
   // finding all 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

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

结论

如果您在本教程中遇到任何疑问,请在评论部分提出。

更新于:2020-12-29

581 次浏览

开启您的 职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.