C++:
การลบเครื่องหมายอัญประกาศออกจากสตริง
วิธีทำ:
นี่คือวิธีที่ตรงไปตรงมาในการกำจัดเครื่องหมายอ้างอิงด้วย C++:
#include <iostream>
#include <algorithm>
std::string remove_quotes(std::string input) {
input.erase(std::remove(input.begin(), input.end(), '\"'), input.end());
input.erase(std::remove(input.begin(), input.end(), '\''), input.end());
return input;
}
int main() {
std::string original = R"("Hello, 'World'!")";
std::string no_quotes = remove_quotes(original);
std::cout << no_quotes << std::endl;
return 0;
}
เมื่อรันโค้ดนี้, คุณจะได้:
Hello, World!
วอลลา! เครื่องหมายอ้างอิงหายไป
ล้ำลึก
อัญประกาศมีความน่ารำคาญในข้อความมาตั้งแต่ยุคแรกๆของการคอมพิวเตอร์ ในสมัยนั้น, คุณจะเห็นนักพัฒนาทุ่มเทการวนลูปผ่านแต่ละอักขระเพื่อกรองออกอัญประกาศนั้นๆ ปัจจุบัน, เรามี std::remove
ใน Standard Template Library (STL) เพื่อทำงานหนักแทนเรา
มีทางเลือกอื่นหรือ? แน่นอน! คุณอาจใช้ regular expressions กับ std::regex
เพื่อเป้าหมายไปที่อัญประกาศ, แต่นั่นก็เหมือนกับการใช้ค้อนขนาดใหญ่เพื่อทุบถั่ว - มีพลัง, แต่อาจเกินความจำเป็นสำหรับงานง่ายๆ สำหรับผู้ที่ชื่นชอบ flavor ของ C++ ใหม่ๆ, คุณอาจทดลองใช้ std::string_view
สำหรับวิธีที่ไม่ต้องการการเปลี่ยนแปลง
ในทางการเขียนโค้ด, จำไว้ว่า std::remove
ไม่ได้จริงๆ ลบองค์ประกอบออกจากตัวบรรจุ; มันจะจัดเรียงที่องค์ประกอบที่ไม่ถูกลบไปข้างหน้าและคืนค่า iterator ไปที่สิ้นสุดใหม่ของช่วง นั่นคือเหตุผลที่เราต้องการวิธี erase
เพื่อตัดส่วนท้ายที่ไม่ต้องการ
ดูเพิ่มเติม
- การอ้างอิง C++
std::remove
: cppreference.com - ข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ
std::string
: cplusplus.com