在 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
我们可以获取不同格式的日期。如果您获取不同格式的日期,请适当更新正则表达式。