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 8namespace android { 9namespace dvr { 10 11// Trims whitespace from the left side of |subject| and returns the result as a 12// new string. 13inline 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. 22inline 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. 32inline 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