ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ค้นหาปีที่แตกต่างกันในสตริงที่กำหนด มาดูตัวอย่างกัน เราถือว่ารูปแบบวันที่เป็น วว/ดด/ปปปป .
ป้อนข้อมูล − ตัวอย่างที่มีวันที่ 01/11/2020, 02/12/2020 และ 03/10/2019
ผลผลิต − 2
เรามีเวลาสองปีที่แตกต่างกันในข้อความที่กำหนดในปี 2020 และ 2019
เราจะใช้ regex เพื่อแยกวันที่ทั้งหมดออกจากสตริงที่กำหนด หากคุณไม่คุ้นเคยกับ regex ใน C++ โปรดอ่านบทช่วยสอนนี้
มาแก้ปัญหากันเถอะ
-
เริ่มต้นข้อความ
-
เขียน regex เพื่อดึงวันที่ออกจากข้อความ
-
เริ่มต้นชุดที่ไม่มีลำดับที่ว่างเปล่า
-
วนซ้ำวันที่และเพิ่มปีในชุดที่ไม่เรียงลำดับเพื่อค้นหาปีที่ไม่ซ้ำกัน
-
พิมพ์ความยาวของชุด
ตัวอย่าง
มาดูโค้ดกันเลย
#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
เราสามารถรับวันที่ในรูปแบบต่างๆ หากคุณได้รับวันที่ในรูปแบบต่างๆ ให้อัปเดต regex อย่างเหมาะสม
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น