Memisahkan Rentetan dengan Berbilang Pembatas
Apabila ditugaskan untuk membahagikan teks kepada unit yang bermakna, pembangun sering menghadapi keperluan untuk memisahkan rentetan menjadi perkataan. Walaupun kaedah konvensional mencukupi untuk pembatas tunggal, apakah pilihan yang tersedia apabila berbilang pembatas terlibat?
Untuk menangani cabaran ini, teknik menggunakan berbilang pembatas untuk pemisahan rentetan boleh dilaksanakan. Mari kita mendalami penyelesaiannya.
Dalam C , sintaks untuk menghuraikan rentetan dengan pembatas tunggal menggunakan aliran rentetan adalah seperti berikut:
std::stringstream stringStream(inputString); std::string word; while(std::getline(stringStream, word, delimiter)) { wordVector.push_back(word); }
Untuk menampung berbilang pembatas, kita mula-mula membaca keseluruhan baris menjadi penimbal. Selepas itu, kami mengulangi baris, mengenal pasti kedudukan di mana mana-mana pembatas yang ditentukan muncul. Dengan menolak kedudukan sebelumnya daripada kedudukan pembatas semasa, kita memperoleh subrentetan yang mewakili perkataan dan menambahnya pada vektor perkataan.
Sebagai contoh, jika kita memilih ruang, apostrof dan koma bertindih sebagai pembatas, kod berikut menyelesaikan tugas:
std::stringstream stringStream(inputString); std::string line; while(std::getline(stringStream, line)) { std::size_t prev = 0, pos; while ((pos = line.find_first_of(" ';", prev)) != std::string::npos) { if (pos > prev) wordVector.push_back(line.substr(prev, pos-prev)); prev = pos+1; } if (prev < line.length()) wordVector.push_back(line.substr(prev, std::string::npos)); }
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Memisahkan Rentetan dengan Berbilang Pembatas dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!