Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(255)

Side by Side Diff: base/strings/string_util.h

Issue 1169393003: Add new SplitString backend. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/strings/string_split_unittest.cc ('k') | base/strings/string_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This file defines utility functions for working with strings. 5 // This file defines utility functions for working with strings.
6 6
7 #ifndef BASE_STRINGS_STRING_UTIL_H_ 7 #ifndef BASE_STRINGS_STRING_UTIL_H_
8 #define BASE_STRINGS_STRING_UTIL_H_ 8 #define BASE_STRINGS_STRING_UTIL_H_
9 9
10 #include <ctype.h> 10 #include <ctype.h>
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 // Therefore, DO NOT USE THESE AS A GENERAL-PURPOSE SUBSTITUTE FOR DEFAULT 131 // Therefore, DO NOT USE THESE AS A GENERAL-PURPOSE SUBSTITUTE FOR DEFAULT
132 // CONSTRUCTORS. There is only one case where you should use these: functions 132 // CONSTRUCTORS. There is only one case where you should use these: functions
133 // which need to return a string by reference (e.g. as a class member 133 // which need to return a string by reference (e.g. as a class member
134 // accessor), and don't have an empty string to use (e.g. in an error case). 134 // accessor), and don't have an empty string to use (e.g. in an error case).
135 // These should not be used as initializers, function arguments, or return 135 // These should not be used as initializers, function arguments, or return
136 // values for functions which return by value or outparam. 136 // values for functions which return by value or outparam.
137 BASE_EXPORT const std::string& EmptyString(); 137 BASE_EXPORT const std::string& EmptyString();
138 BASE_EXPORT const string16& EmptyString16(); 138 BASE_EXPORT const string16& EmptyString16();
139 139
140 // Contains the set of characters representing whitespace in the corresponding 140 // Contains the set of characters representing whitespace in the corresponding
141 // encoding. Null-terminated. 141 // encoding. Null-terminated. The ASCII versions are the whitespaces as defined
142 BASE_EXPORT extern const wchar_t kWhitespaceWide[]; 142 // by HTML5, and don't include control characters.
143 BASE_EXPORT extern const char16 kWhitespaceUTF16[]; 143 BASE_EXPORT extern const wchar_t kWhitespaceWide[]; // Includes Unicode.
144 BASE_EXPORT extern const char16 kWhitespaceUTF16[]; // Includes Unicode.
144 BASE_EXPORT extern const char kWhitespaceASCII[]; 145 BASE_EXPORT extern const char kWhitespaceASCII[];
146 BASE_EXPORT extern const char16 kWhitespaceASCIIAs16[]; // No unicode.
145 147
146 // Null-terminated string representing the UTF-8 byte order mark. 148 // Null-terminated string representing the UTF-8 byte order mark.
147 BASE_EXPORT extern const char kUtf8ByteOrderMark[]; 149 BASE_EXPORT extern const char kUtf8ByteOrderMark[];
148 150
149 // Removes characters in |remove_chars| from anywhere in |input|. Returns true 151 // Removes characters in |remove_chars| from anywhere in |input|. Returns true
150 // if any characters were removed. |remove_chars| must be null-terminated. 152 // if any characters were removed. |remove_chars| must be null-terminated.
151 // NOTE: Safe to use the same variable for both |input| and |output|. 153 // NOTE: Safe to use the same variable for both |input| and |output|.
152 BASE_EXPORT bool RemoveChars(const string16& input, 154 BASE_EXPORT bool RemoveChars(const string16& input,
153 const base::StringPiece16& remove_chars, 155 const base::StringPiece16& remove_chars,
154 string16* output); 156 string16* output);
155 BASE_EXPORT bool RemoveChars(const std::string& input, 157 BASE_EXPORT bool RemoveChars(const std::string& input,
156 const base::StringPiece& remove_chars, 158 const base::StringPiece& remove_chars,
157 std::string* output); 159 std::string* output);
158 160
159 // Replaces characters in |replace_chars| from anywhere in |input| with 161 // Replaces characters in |replace_chars| from anywhere in |input| with
160 // |replace_with|. Each character in |replace_chars| will be replaced with 162 // |replace_with|. Each character in |replace_chars| will be replaced with
161 // the |replace_with| string. Returns true if any characters were replaced. 163 // the |replace_with| string. Returns true if any characters were replaced.
162 // |replace_chars| must be null-terminated. 164 // |replace_chars| must be null-terminated.
163 // NOTE: Safe to use the same variable for both |input| and |output|. 165 // NOTE: Safe to use the same variable for both |input| and |output|.
164 BASE_EXPORT bool ReplaceChars(const string16& input, 166 BASE_EXPORT bool ReplaceChars(const string16& input,
165 const base::StringPiece16& replace_chars, 167 const base::StringPiece16& replace_chars,
166 const string16& replace_with, 168 const string16& replace_with,
167 string16* output); 169 string16* output);
168 BASE_EXPORT bool ReplaceChars(const std::string& input, 170 BASE_EXPORT bool ReplaceChars(const std::string& input,
169 const base::StringPiece& replace_chars, 171 const base::StringPiece& replace_chars,
170 const std::string& replace_with, 172 const std::string& replace_with,
171 std::string* output); 173 std::string* output);
172 174
175 enum TrimPositions {
176 TRIM_NONE = 0,
177 TRIM_LEADING = 1 << 0,
178 TRIM_TRAILING = 1 << 1,
179 TRIM_ALL = TRIM_LEADING | TRIM_TRAILING,
180 };
181
173 // Removes characters in |trim_chars| from the beginning and end of |input|. 182 // Removes characters in |trim_chars| from the beginning and end of |input|.
174 // |trim_chars| must be null-terminated. 183 // The 8-bit version only works on 8-bit characters, not UTF-8.
175 // NOTE: Safe to use the same variable for both |input| and |output|. 184 //
185 // It is safe to use the same variable for both |input| and |output| (this is
186 // the normal usage to trim in-place).
176 BASE_EXPORT bool TrimString(const string16& input, 187 BASE_EXPORT bool TrimString(const string16& input,
177 const base::StringPiece16& trim_chars, 188 base::StringPiece16 trim_chars,
178 string16* output); 189 string16* output);
179 BASE_EXPORT bool TrimString(const std::string& input, 190 BASE_EXPORT bool TrimString(const std::string& input,
180 const base::StringPiece& trim_chars, 191 base::StringPiece trim_chars,
181 std::string* output); 192 std::string* output);
182 193
194 // StringPiece versions of the above. The returned pieces refer to the original
195 // buffer.
196 BASE_EXPORT StringPiece16 TrimString(StringPiece16 input,
197 const base::StringPiece16& trim_chars,
198 TrimPositions positions);
199 BASE_EXPORT StringPiece TrimString(StringPiece input,
200 const base::StringPiece& trim_chars,
201 TrimPositions positions);
202
183 // Truncates a string to the nearest UTF-8 character that will leave 203 // Truncates a string to the nearest UTF-8 character that will leave
184 // the string less than or equal to the specified byte size. 204 // the string less than or equal to the specified byte size.
185 BASE_EXPORT void TruncateUTF8ToByteSize(const std::string& input, 205 BASE_EXPORT void TruncateUTF8ToByteSize(const std::string& input,
186 const size_t byte_size, 206 const size_t byte_size,
187 std::string* output); 207 std::string* output);
188 208
189 // Trims any whitespace from either end of the input string. Returns where 209 // Trims any whitespace from either end of the input string. Returns where
190 // whitespace was found. 210 // whitespace was found.
191 // The non-wide version has two functions: 211 // The non-wide version has two functions:
192 // * TrimWhitespaceASCII() 212 // * TrimWhitespaceASCII()
193 // This function is for ASCII strings and only looks for ASCII whitespace; 213 // This function is for ASCII strings and only looks for ASCII whitespace;
194 // Please choose the best one according to your usage. 214 // Please choose the best one according to your usage.
195 // NOTE: Safe to use the same variable for both input and output. 215 // NOTE: Safe to use the same variable for both input and output.
196 enum TrimPositions {
197 TRIM_NONE = 0,
198 TRIM_LEADING = 1 << 0,
199 TRIM_TRAILING = 1 << 1,
200 TRIM_ALL = TRIM_LEADING | TRIM_TRAILING,
201 };
202 BASE_EXPORT TrimPositions TrimWhitespace(const string16& input, 216 BASE_EXPORT TrimPositions TrimWhitespace(const string16& input,
203 TrimPositions positions, 217 TrimPositions positions,
204 base::string16* output); 218 base::string16* output);
205 BASE_EXPORT TrimPositions TrimWhitespaceASCII(const std::string& input, 219 BASE_EXPORT TrimPositions TrimWhitespaceASCII(const std::string& input,
206 TrimPositions positions, 220 TrimPositions positions,
207 std::string* output); 221 std::string* output);
208 222
209 // Deprecated. This function is only for backward compatibility and calls 223 // Deprecated. This function is only for backward compatibility and calls
210 // TrimWhitespaceASCII(). 224 // TrimWhitespaceASCII().
211 BASE_EXPORT TrimPositions TrimWhitespace(const std::string& input, 225 BASE_EXPORT TrimPositions TrimWhitespace(const std::string& input,
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 str->reserve(length_with_null); 457 str->reserve(length_with_null);
444 str->resize(length_with_null - 1); 458 str->resize(length_with_null - 1);
445 return &((*str)[0]); 459 return &((*str)[0]);
446 } 460 }
447 461
448 //----------------------------------------------------------------------------- 462 //-----------------------------------------------------------------------------
449 463
450 // Splits a string into its fields delimited by any of the characters in 464 // Splits a string into its fields delimited by any of the characters in
451 // |delimiters|. Each field is added to the |tokens| vector. Returns the 465 // |delimiters|. Each field is added to the |tokens| vector. Returns the
452 // number of tokens found. 466 // number of tokens found.
467 //
468 // DEPRECATED. Use SplitStringUsingSet for new code (these just forward).
469 // TODO(brettw) convert callers and delete these forwarders.
453 BASE_EXPORT size_t Tokenize(const base::string16& str, 470 BASE_EXPORT size_t Tokenize(const base::string16& str,
454 const base::string16& delimiters, 471 const base::string16& delimiters,
455 std::vector<base::string16>* tokens); 472 std::vector<base::string16>* tokens);
456 BASE_EXPORT size_t Tokenize(const std::string& str, 473 BASE_EXPORT size_t Tokenize(const std::string& str,
457 const std::string& delimiters, 474 const std::string& delimiters,
458 std::vector<std::string>* tokens); 475 std::vector<std::string>* tokens);
459 BASE_EXPORT size_t Tokenize(const base::StringPiece& str, 476 BASE_EXPORT size_t Tokenize(const base::StringPiece& str,
460 const base::StringPiece& delimiters, 477 const base::StringPiece& delimiters,
461 std::vector<base::StringPiece>* tokens); 478 std::vector<base::StringPiece>* tokens);
462 479
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 // string can contain wildcards like * and ? 515 // string can contain wildcards like * and ?
499 // The backslash character (\) is an escape character for * and ? 516 // The backslash character (\) is an escape character for * and ?
500 // We limit the patterns to having a max of 16 * or ? characters. 517 // We limit the patterns to having a max of 16 * or ? characters.
501 // ? matches 0 or 1 character, while * matches 0 or more characters. 518 // ? matches 0 or 1 character, while * matches 0 or more characters.
502 BASE_EXPORT bool MatchPattern(const base::StringPiece& string, 519 BASE_EXPORT bool MatchPattern(const base::StringPiece& string,
503 const base::StringPiece& pattern); 520 const base::StringPiece& pattern);
504 BASE_EXPORT bool MatchPattern(const base::string16& string, 521 BASE_EXPORT bool MatchPattern(const base::string16& string,
505 const base::string16& pattern); 522 const base::string16& pattern);
506 523
507 #endif // BASE_STRINGS_STRING_UTIL_H_ 524 #endif // BASE_STRINGS_STRING_UTIL_H_
OLDNEW
« no previous file with comments | « base/strings/string_split_unittest.cc ('k') | base/strings/string_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698