Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggantikan Bahagian Rentetan dalam C?

Bagaimanakah Saya Boleh Menggantikan Bahagian Rentetan dalam C?

DDD
DDDasal
2024-12-22 18:08:11710semak imbas

How Can I Replace Parts of a String in C  ?

Menggantikan Segmen Rentetan dengan Rentetan Baharu

Dalam C , menggantikan sebahagian daripada rentetan dengan rentetan lain memerlukan gabungan operasi. Walaupun sesetengah perpustakaan menawarkan fungsi replace() khusus untuk penggantian langsung, berikut ialah cara anda boleh mendekatinya menggunakan fungsi C standard:

Menggunakan Fungsi find() dan replace()

Fungsi find() mencari kedudukan subrentetan dalam rentetan. Dengan menggabungkan ini dengan fungsi replace(), yang menggantikan julat yang ditentukan dengan rentetan lain, anda boleh menggantikan sebahagian rentetan dengan berkesan:

bool replace(std::string& str, const std::string& from, const std::string& to) {
    size_t start_pos = str.find(from);
    if(start_pos == std::string::npos)
        return false;
    str.replace(start_pos, from.length(), to);
    return true;
}

std::string string("hello $name");
replace(string, "$name", "Somename");

Pendekatan ini menggantikan kejadian pertama subrentetan "$name " dengan "Sesetengahnya."

Menggantikan Semua Kejadian dengan replaceAll

Untuk menggantikan semua kejadian subrentetan, anda boleh melanjutkan kaedah replace() untuk mencari dan menggantikan berbilang kejadian dalam rentetan:

void replaceAll(std::string& str, const std::string& from, const std::string& to) {
    if(from.empty())
        return;
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length(); // Adjust start position if 'to' contains 'from'
    }
}

Fungsi ini melaksanakan penggantian berturut-turut semua kejadian subrentetan "dari" dengan rentetan "ke" dalam rentetan yang diberikan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Bahagian Rentetan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn