15 #include "absl/strings/str_replace.h"
17 #include "absl/strings/str_cat.h"
21 namespace strings_internal {
24 std::initializer_list<std::pair<absl::string_view, absl::string_view>>;
31 std::vector<strings_internal::ViableSubstitution>* subs_ptr,
33 auto&
subs = *subs_ptr;
34 int substitutions = 0;
36 while (!
subs.empty()) {
37 auto& sub =
subs.back();
38 if (sub.offset >=
pos) {
39 if (
pos <=
s.size()) {
42 pos = sub.offset + sub.old.size();
45 sub.offset =
s.find(sub.old,
pos);
46 if (sub.offset ==
s.npos) {
57 result_ptr->append(
s.data() +
pos,
s.size() -
pos);
73 return StrReplaceAll<strings_internal::FixedMapping>(
s, replacements);
78 return StrReplaceAll<strings_internal::FixedMapping>(replacements,
target);