c++11 Find ve FindAll fonksiyonları
enum class Case { SENSITIVE, INSENSITIVE };
size_t Find(
const std::string &source, //Source string to be searched
const std::string &search_string, //The string to search for
Case searchCase = Case::INSENSITIVE,//Choose case sensitive/insensitive search
size_t offset = 0) { //Start the search from this offset
//Implementation
auto searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);
return searching != std::string::npos ? searching : std::string::npos;
/*
return position of the first character
of the substring, else std::string::npos
*/
}
std::vector<size_t> FindAll(
const std::string &source, //Source string to be searched
const std::string &search_string, //The string to search for
Case searchCase = Case::INSENSITIVE,//Choose case sensitive/insensitive search
size_t offset = 0) { //Start the search from this offset
//Implementation
auto searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);;
std::vector<size_t> positions;
while (searching < source.length() && (searching != std::string::npos)){
positions.emplace_back(searching);
offset= searching+1;
searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);
}
return positions;
//return searching != std::string::npos ? searching : std::string::npos;
/*
return position of the first character
of the substring, else std::string::npos
*/
}
Büyük ve küçük harfe dikkat ederek yada etmeyerek alt string araması. Ascii standardı için hazırladım. c++11 ile geçerli. Tepe tepe kullanın.
size_t Find(
const std::string &source, //Source string to be searched
const std::string &search_string, //The string to search for
Case searchCase = Case::INSENSITIVE,//Choose case sensitive/insensitive search
size_t offset = 0) { //Start the search from this offset
//Implementation
auto searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);
return searching != std::string::npos ? searching : std::string::npos;
/*
return position of the first character
of the substring, else std::string::npos
*/
}
std::vector<size_t> FindAll(
const std::string &source, //Source string to be searched
const std::string &search_string, //The string to search for
Case searchCase = Case::INSENSITIVE,//Choose case sensitive/insensitive search
size_t offset = 0) { //Start the search from this offset
//Implementation
auto searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);;
std::vector<size_t> positions;
while (searching < source.length() && (searching != std::string::npos)){
positions.emplace_back(searching);
offset= searching+1;
searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);
}
return positions;
//return searching != std::string::npos ? searching : std::string::npos;
/*
return position of the first character
of the substring, else std::string::npos
*/
}
Büyük ve küçük harfe dikkat ederek yada etmeyerek alt string araması. Ascii standardı için hazırladım. c++11 ile geçerli. Tepe tepe kullanın.
Yorumlar
Yorum Gönder