1 #include <davix_internal_config.hpp>
2 #include "stringutils.hpp"
3 #include <cstring>
4 #include <algorithm>
5 
6 namespace StrUtil{
7 
tokenSplit(const std::string & str,const std::string & delimiter)8 std::vector<std::string> tokenSplit(const std::string & str, const std::string & delimiter){
9     std::vector<std::string> res;
10     std::string::const_iterator it_prev, it_cur;
11     for(it_prev = it_cur = str.begin(); it_cur < str.end(); ((it_prev != str.end())?(it_prev++):(it_prev))){
12         it_cur = std::find_first_of(it_prev, str.end(), delimiter.begin(), delimiter.end());
13         if(it_prev != it_cur)
14             res.push_back(std::string(it_prev,it_cur));
15         it_prev = it_cur;
16     }
17     return res;
18 }
19 
stringReplace(std::string str,const std::string & search,const std::string & replace)20 std::string stringReplace(std::string str, const std::string & search, const std::string & replace) {
21     size_t pos = 0;
22 
23     if (search.size() == 0) { return str; }
24 
25     while ((pos = str.find(search, pos)) != std::string::npos) {
26         str.replace(pos, search.length(), replace);
27         pos += replace.length();
28     }
29 
30     return str;
31 }
32 
compare_ncase(const std::string & str1,const std::string & str2)33 int compare_ncase(const std::string & str1, const std::string & str2){
34     return strcasecmp(str1.c_str(), str2.c_str());
35 }
36 
compare_ncase(const std::string & str1,const std::string & str2,size_t max)37 int compare_ncase(const std::string &str1, const std::string &str2, size_t max){
38     return strncasecmp(str1.c_str(), str2.c_str(), max);
39 }
40 
41 
42 
compare_ncase(const std::string & str1,off_t offset,size_t size,const char * cstr2)43 int compare_ncase(const std::string & str1, off_t offset, size_t size, const char* cstr2){
44      return strncasecmp(str1.c_str(), cstr2+ offset, size);
45 }
46 
47 
48 }
49