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