在 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.