1 #ifndef ANDROID_DVR_PERFORMANCED_STRING_TRIM_H_
2 #define ANDROID_DVR_PERFORMANCED_STRING_TRIM_H_
3
4 #include <functional>
5 #include <locale>
6 #include <string>
7
8 namespace android {
9 namespace dvr {
10
11 // Trims whitespace from the left side of |subject| and returns the result as a
12 // new string.
LeftTrim(std::string subject)13 inline std::string LeftTrim(std::string subject) {
14 subject.erase(subject.begin(),
15 std::find_if(subject.begin(), subject.end(),
16 std::not1(std::ptr_fun<int, int>(std::isspace))));
17 return subject;
18 }
19
20 // Trims whitespace from the right side of |subject| and returns the result as a
21 // new string.
RightTrim(std::string subject)22 inline std::string RightTrim(std::string subject) {
23 subject.erase(std::find_if(subject.rbegin(), subject.rend(),
24 std::not1(std::ptr_fun<int, int>(std::isspace)))
25 .base(),
26 subject.end());
27 return subject;
28 }
29
30 // Trims whitespace from the both sides of |subject| and returns the result as a
31 // new string.
Trim(std::string subject)32 inline std::string Trim(std::string subject) {
33 subject.erase(subject.begin(),
34 std::find_if(subject.begin(), subject.end(),
35 std::not1(std::ptr_fun<int, int>(std::isspace))));
36 subject.erase(std::find_if(subject.rbegin(), subject.rend(),
37 std::not1(std::ptr_fun<int, int>(std::isspace)))
38 .base(),
39 subject.end());
40 return subject;
41 }
42
43 } // namespace dvr
44 } // namespace android
45
46 #endif // ANDROID_DVR_PERFORMANCED_STRING_TRIM_H_
47