| 408 | } |
| 409 | |
| 410 | String String::replace(String const& rplc, String const& val, CaseSensitivity cs) const { |
| 411 | size_t index; |
| 412 | size_t sz = size(); |
| 413 | size_t rsz = rplc.size(); |
| 414 | String ret; |
| 415 | ret.reserve(m_string.length()); |
| 416 | |
| 417 | if (rplc.empty()) |
| 418 | return *this; |
| 419 | |
| 420 | index = find(rplc, 0, cs); |
| 421 | if (index == NPos) |
| 422 | return *this; |
| 423 | |
| 424 | auto it = begin(); |
| 425 | for (size_t i = 0; i < index; ++i) |
| 426 | ret.append(*it++); |
| 427 | |
| 428 | while (index < sz) { |
| 429 | ret.append(val); |
| 430 | index += rsz; |
| 431 | for (size_t i = 0; i < rsz; ++i) |
| 432 | ++it; |
| 433 | |
| 434 | size_t nindex = find(rplc, index, cs); |
| 435 | for (size_t i = index; i < nindex && i < sz; ++i) |
| 436 | ret.append(*it++); |
| 437 | |
| 438 | index = nindex; |
| 439 | } |
| 440 | return ret; |
| 441 | } |
| 442 | |
| 443 | String String::trimEnd(String const& pattern) const { |
| 444 | size_t end; |