Mengalih keluar Ruang Menuju dan Mengekor daripada Rentetan dalam C
Masalah:
Bagaimanakah kita dengan cekap mengalih keluar ruang hadapan dan belakang daripada rentetan C? Selain itu, bagaimanakah kita boleh melanjutkan operasi ini untuk mengalih keluar ruang tambahan antara perkataan dalam rentetan?
Penyelesaian:
Mengalih keluar Ruang Mendahului dan Mengekor:
std::string trim(const std::string& str, const std::string& whitespace = " \t") { const auto strBegin = str.find_first_not_of(whitespace); if (strBegin == std::string::npos) return ""; // No content const auto strEnd = str.find_last_not_of(whitespace); const auto strRange = strEnd - strBegin + 1; return str.substr(strBegin, strRange); }
Mengurangkan Ruang Tambahan:
std::string reduce(const std::string& str, const std::string& fill = " ", const std::string& whitespace = " \t") { // Trim first auto result = trim(str, whitespace); // Replace sub ranges auto beginSpace = result.find_first_of(whitespace); while (beginSpace != std::string::npos) { const auto endSpace = result.find_first_not_of(whitespace, beginSpace); const auto range = endSpace - beginSpace; result.replace(beginSpace, range, fill); const auto newStart = beginSpace + fill.length(); beginSpace = result.find_first_of(whitespace, newStart); } return result; }
Contoh:
const std::string foo = " too much\t \tspace\t\t\t "; const std::string trimmedFoo = trim(foo); const std::string reducedFoo = reduce(foo); std::cout << "Original: " << foo << std::endl; std::cout << "Trimmed: " << trimmedFoo << std::endl; std::cout << "Reduced: " << reducedFoo << std::endl;
Output:
Original: too much space Trimmed: too much space Reduced: too-much-space
Atas ialah kandungan terperinci Bagaimana Mengeluarkan Ruang Utama, Mengekor dan Tambahan dengan Cekap daripada Rentetan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!