diff options
author | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-29 21:32:01 +0000 |
---|---|---|
committer | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-29 21:32:01 +0000 |
commit | e4dad5bd72ddd563b84eede80cf2b414ea688b2c (patch) | |
tree | 24aa18551de46887173b800c33e8882bf31e712d /base/string_util.cc | |
parent | 69877c29ce86be61d54007e5b515415fb05d78f8 (diff) | |
download | chromium_src-e4dad5bd72ddd563b84eede80cf2b414ea688b2c.zip chromium_src-e4dad5bd72ddd563b84eede80cf2b414ea688b2c.tar.gz chromium_src-e4dad5bd72ddd563b84eede80cf2b414ea688b2c.tar.bz2 |
Add a version of ReplaceStringPlaceholders that operates on std::string
instead of string16.
BUG=none
TEST=base unit tests
Original patch by avd@google.com at:
http://codereview.chromium.org/245046
Review URL: http://codereview.chromium.org/242061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27532 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/string_util.cc')
-rw-r--r-- | base/string_util.cc | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/base/string_util.cc b/base/string_util.cc index fd33ef0..ee0a9a5 100644 --- a/base/string_util.cc +++ b/base/string_util.cc @@ -1310,24 +1310,25 @@ void SplitStringAlongWhitespace(const std::wstring& str, } } -string16 ReplaceStringPlaceholders(const string16& format_string, - const std::vector<string16>& subst, - std::vector<size_t>* offsets) { +template<class StringType> +StringType DoReplaceStringPlaceholders(const StringType& format_string, + const std::vector<StringType>& subst, + std::vector<size_t>* offsets) { int substitutions = subst.size(); DCHECK(substitutions < 10); int sub_length = 0; - for (std::vector<string16>::const_iterator iter = subst.begin(); + for (typename std::vector<StringType>::const_iterator iter = subst.begin(); iter != subst.end(); ++iter) { sub_length += (*iter).length(); } - string16 formatted; + StringType formatted; formatted.reserve(format_string.length() + sub_length); std::vector<ReplacementOffset> r_offsets; - for (string16::const_iterator i = format_string.begin(); + for (typename StringType::const_iterator i = format_string.begin(); i != format_string.end(); ++i) { if ('$' == *i) { if (i + 1 != format_string.end()) { @@ -1363,6 +1364,18 @@ string16 ReplaceStringPlaceholders(const string16& format_string, } string16 ReplaceStringPlaceholders(const string16& format_string, + const std::vector<string16>& subst, + std::vector<size_t>* offsets) { + return DoReplaceStringPlaceholders(format_string, subst, offsets); +} + +std::string ReplaceStringPlaceholders(const std::string& format_string, + const std::vector<std::string>& subst, + std::vector<size_t>* offsets) { + return DoReplaceStringPlaceholders(format_string, subst, offsets); +} + +string16 ReplaceStringPlaceholders(const string16& format_string, const string16& a, size_t* offset) { std::vector<size_t> offsets; |