การลบเครื่องหมายอัญประกาศออกจากสตริง

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