diff options
Diffstat (limited to 'base/strings/string_util.cc')
-rw-r--r-- | base/strings/string_util.cc | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/base/strings/string_util.cc b/base/strings/string_util.cc index e23317e..e64b95f 100644 --- a/base/strings/string_util.cc +++ b/base/strings/string_util.cc @@ -113,7 +113,7 @@ const string16& EmptyString16() { template<typename STR> bool ReplaceCharsT(const STR& input, - const typename STR::value_type replace_chars[], + const STR& replace_chars, const STR& replace_with, STR* output) { bool removed = false; @@ -132,41 +132,41 @@ bool ReplaceCharsT(const STR& input, } bool ReplaceChars(const string16& input, - const char16 replace_chars[], + const base::StringPiece16& replace_chars, const string16& replace_with, string16* output) { - return ReplaceCharsT(input, replace_chars, replace_with, output); + return ReplaceCharsT(input, replace_chars.as_string(), replace_with, output); } bool ReplaceChars(const std::string& input, - const char replace_chars[], + const base::StringPiece& replace_chars, const std::string& replace_with, std::string* output) { - return ReplaceCharsT(input, replace_chars, replace_with, output); + return ReplaceCharsT(input, replace_chars.as_string(), replace_with, output); } bool RemoveChars(const string16& input, - const char16 remove_chars[], + const base::StringPiece16& remove_chars, string16* output) { - return ReplaceChars(input, remove_chars, string16(), output); + return ReplaceChars(input, remove_chars.as_string(), string16(), output); } bool RemoveChars(const std::string& input, - const char remove_chars[], + const base::StringPiece& remove_chars, std::string* output) { - return ReplaceChars(input, remove_chars, std::string(), output); + return ReplaceChars(input, remove_chars.as_string(), std::string(), output); } template<typename STR> TrimPositions TrimStringT(const STR& input, - const typename STR::value_type trim_chars[], + const STR& trim_chars, TrimPositions positions, STR* output) { // Find the edges of leading/trailing whitespace as desired. - const typename STR::size_type last_char = input.length() - 1; - const typename STR::size_type first_good_char = (positions & TRIM_LEADING) ? + const size_t last_char = input.length() - 1; + const size_t first_good_char = (positions & TRIM_LEADING) ? input.find_first_not_of(trim_chars) : 0; - const typename STR::size_type last_good_char = (positions & TRIM_TRAILING) ? + const size_t last_good_char = (positions & TRIM_TRAILING) ? input.find_last_not_of(trim_chars) : last_char; // When the string was all whitespace, report that we stripped off whitespace @@ -190,15 +190,17 @@ TrimPositions TrimStringT(const STR& input, } bool TrimString(const string16& input, - const char16 trim_chars[], + const base::StringPiece16& trim_chars, string16* output) { - return TrimStringT(input, trim_chars, TRIM_ALL, output) != TRIM_NONE; + return TrimStringT(input, trim_chars.as_string(), TRIM_ALL, output) != + TRIM_NONE; } bool TrimString(const std::string& input, - const char trim_chars[], + const base::StringPiece& trim_chars, std::string* output) { - return TrimStringT(input, trim_chars, TRIM_ALL, output) != TRIM_NONE; + return TrimStringT(input, trim_chars.as_string(), TRIM_ALL, output) != + TRIM_NONE; } void TruncateUTF8ToByteSize(const std::string& input, @@ -240,13 +242,14 @@ void TruncateUTF8ToByteSize(const std::string& input, TrimPositions TrimWhitespace(const string16& input, TrimPositions positions, string16* output) { - return TrimStringT(input, kWhitespaceUTF16, positions, output); + return TrimStringT(input, base::string16(kWhitespaceUTF16), positions, + output); } TrimPositions TrimWhitespaceASCII(const std::string& input, TrimPositions positions, std::string* output) { - return TrimStringT(input, kWhitespaceASCII, positions, output); + return TrimStringT(input, std::string(kWhitespaceASCII), positions, output); } // This function is only for backward-compatibility. @@ -435,17 +438,15 @@ bool StartsWith(const string16& str, const string16& search, template <typename STR> bool EndsWithT(const STR& str, const STR& search, bool case_sensitive) { - typename STR::size_type str_length = str.length(); - typename STR::size_type search_length = search.length(); + size_t str_length = str.length(); + size_t search_length = search.length(); if (search_length > str_length) return false; - if (case_sensitive) { + if (case_sensitive) return str.compare(str_length - search_length, search_length, search) == 0; - } else { - return std::equal(search.begin(), search.end(), - str.begin() + (str_length - search_length), - base::CaseInsensitiveCompare<typename STR::value_type>()); - } + return std::equal(search.begin(), search.end(), + str.begin() + (str_length - search_length), + base::CaseInsensitiveCompare<typename STR::value_type>()); } bool EndsWith(const std::string& str, const std::string& search, @@ -491,7 +492,7 @@ string16 FormatBytesUnlocalized(int64 bytes) { template<class StringType> void DoReplaceSubstringsAfterOffset(StringType* str, - typename StringType::size_type start_offset, + size_t start_offset, const StringType& find_this, const StringType& replace_with, bool replace_all) { @@ -499,7 +500,7 @@ void DoReplaceSubstringsAfterOffset(StringType* str, return; DCHECK(!find_this.empty()); - for (typename StringType::size_type offs(str->find(find_this, start_offset)); + for (size_t offs(str->find(find_this, start_offset)); offs != StringType::npos; offs = str->find(find_this, offs)) { str->replace(offs, find_this.length(), replace_with); offs += replace_with.length(); @@ -510,7 +511,7 @@ void DoReplaceSubstringsAfterOffset(StringType* str, } void ReplaceFirstSubstringAfterOffset(string16* str, - string16::size_type start_offset, + size_t start_offset, const string16& find_this, const string16& replace_with) { DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with, @@ -518,7 +519,7 @@ void ReplaceFirstSubstringAfterOffset(string16* str, } void ReplaceFirstSubstringAfterOffset(std::string* str, - std::string::size_type start_offset, + size_t start_offset, const std::string& find_this, const std::string& replace_with) { DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with, @@ -526,7 +527,7 @@ void ReplaceFirstSubstringAfterOffset(std::string* str, } void ReplaceSubstringsAfterOffset(string16* str, - string16::size_type start_offset, + size_t start_offset, const string16& find_this, const string16& replace_with) { DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with, @@ -534,7 +535,7 @@ void ReplaceSubstringsAfterOffset(string16* str, } void ReplaceSubstringsAfterOffset(std::string* str, - std::string::size_type start_offset, + size_t start_offset, const std::string& find_this, const std::string& replace_with) { DoReplaceSubstringsAfterOffset(str, start_offset, find_this, replace_with, @@ -548,9 +549,9 @@ static size_t TokenizeT(const STR& str, std::vector<STR>* tokens) { tokens->clear(); - typename STR::size_type start = str.find_first_not_of(delimiters); + size_t start = str.find_first_not_of(delimiters); while (start != STR::npos) { - typename STR::size_type end = str.find_first_of(delimiters, start + 1); + size_t end = str.find_first_of(delimiters, start + 1); if (end == STR::npos) { tokens->push_back(str.substr(start)); break; |