क्या std :: string के लिए केस असंवेदनशील खोज() विधि मौजूद है?केस असंवेदनशील स्ट्रिंग ::
उत्तर
आप दोनों स्ट्रिंग्स को ऊपरी-केस कर सकते हैं और नियमित खोज का उपयोग कर सकते हैं। (नोट: यदि आपके पास यूनिकोड स्ट्रिंग है तो यह दृष्टिकोण सही नहीं हो सकता है।)
बूस्ट में ifind_first
भी केस-असंवेदनशील खोज के लिए है। (ध्यान दें कि यह size_t
के बजाय एक रेंज देता है)।
#include <string>
#include <boost/algorithm/string/find.hpp>
#include <cstdio>
#include <cctype>
std::string upperCase(std::string input) {
for (std::string::iterator it = input.begin(); it != input.end(); ++ it)
*it = toupper(*it);
return input;
}
int main() {
std::string foo = "1 FoO 2 foo";
std::string target = "foo";
printf("string.find: %zu\n", foo.find(target));
printf("string.find w/ upperCase: %zu\n", upperCase(foo).find(upperCase(target)));
printf("ifind_first: %zu\n", boost::algorithm::ifind_first(foo, target).begin() - foo.begin());
return 0;
}
+1 बूस्ट। स्ट्रिंग एल्गोरिदम परियोजनाओं के लिए एक पूर्व शर्त है :) –
मैंने अभी ifind_first एक टेस्ट ड्राइव दिया है, और यह 2 स्ट्रिंग्स को कम केस (बूस्ट का उपयोग करके) में परिवर्तित करने और std :: string :: find का उपयोग करने से धीमा था। – goji
लेकिन यह सामान्य मामले में यूनिकोड के लिए काम नहीं करेगा। "ß" और "एसएस" बराबर की तुलना करनी चाहिए, लेकिन बूस्ट स्ट्रिंग एल्गोरिदम इसे संभाल नहीं लेता है। – dalle
for(int i=0; i<yourString.length()
&& tolower(yourString[i])!=yourLoweredChar; i++)
{
return i;
}
return -1;
तो -1 दिया जाता है तब अपने लक्षित चार वहाँ
बाकीनहीं है चार
कुछ भी कल्पना करने से पहले के पहले उभरता है देता है,
http://www.gotw.ca/gotw/029.htm
पर एक नजर हैऔर देखें कि कस्टम कैरेक्टर विशेषता वर्ग का उपयोग करना आप जो चाहते हैं वह नहीं है।
मैं, क्या सुझाव दिया है | (@programmersbook के रूप में ही)
#include <iostream>
#include <algorithm>
#include <string>
bool lower_test (char l, char r) {
return (std::tolower(l) == std::tolower(r));
}
int main()
{
std::string text("foo BaR");
std::string search("bar");
std::string::iterator fpos = std::search(text.begin(), text.end(), search.begin(), search.end(), lower_test);
if (fpos != text.end())
std::cout << "found at: " << std::distance(text.begin(), fpos) << std::endl;
return 0;
}
- 1. केस असंवेदनशील स्ट्रिंग तुलना
- 2. कीड कोलेक्शन स्ट्रिंग केस असंवेदनशील
- 3. केस असंवेदनशील
- 4. केस-असंवेदनशील
- 5. केस-असंवेदनशील एनएसएसटींग तुलना
- 6. स्ट्रिंग कुंजी और केस असंवेदनशील खोज
- 7. स्ट्रिंग सूचियों पर केस असंवेदनशील पैटर्न मिलान
- 8. इकाई फ्रेमवर्क और केस असंवेदनशील स्ट्रिंग खोज
- 9. जावास्क्रिप्ट में केस असंवेदनशील स्ट्रिंग प्रतिस्थापन?
- 10. अभिव्यक्ति और केस-असंवेदनशील
- 11. डाटाबेस केस असंवेदनशील सूचकांक?
- 12. केस असंवेदनशील सभी
- 13. केस असंवेदनशील खोज/प्रश्न
- 14. केस असंवेदनशील शब्दकोश खोज?
- 15. ऐरेलिस्ट तत्व केस-असंवेदनशील
- 16. केस-असंवेदनशील array_unique
- 17. एक केस-असंवेदनशील सूची
- 18. केस असंवेदनशील #define
- 19. केस असंवेदनशील एलडीएपी खोज
- 20. एसओएलआर केस असंवेदनशील खोज
- 21. एक्सएमएल पथ - केस असंवेदनशील
- 22. केस-असंवेदनशील GetMethod?
- 23. PHP: केस-असंवेदनशील पैरामीटर
- 24. LINQ स्ट्रिंग में एक और स्ट्रिंग केस असंवेदनशील
- 25. एंटिटी फ्रेमवर्क केस-असंवेदनशील बनाएं
- 26. एसएचए -256 केस असंवेदनशील है?
- 27. MySQL में केस-असंवेदनशील प्रतिस्थापन?
- 28. जेसन.NET केस-असंवेदनशील संपत्ति Deserialization
- 29. स्ट्रॉप्स केस असंवेदनशील कैसे बनाएं
- 30. MongoDB केस असंवेदनशील कुंजी खोज
के अर्थ पर निर्भर करता है कि "केस संवेदी।" क्या आपके पास केवल ASCII अक्षर हैं, या क्या आपको पूर्ण यूनिकोड संयोजन की आवश्यकता है? – Philipp