Esiste un metodo find() maiuscole/minuscole per std :: string?Stringa insensibile alle maiuscole :: trova
risposta
È possibile utilizzare entrambe le stringhe in maiuscolo e utilizzare la ricerca normale. (Nota: questo approccio potrebbe non essere corretto se si dispone di stringa Unicode.)
In Boost è inoltre disponibile ifind_first
per la ricerca senza distinzione tra maiuscole e minuscole. (nota che restituisce un intervallo invece di un 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 Algoritmi Boost.String è un prerequisito per i progetti :) –
Ho appena dato ifind_first a un test drive, ed è stato più lento della conversione delle 2 stringhe in lower casee (usando boost) e usando std :: string :: find. – goji
Ma non funzionerà per Unicode nel caso generale. "ß" e "SS" dovrebbero essere uguali, ma gli Algoritmi Boost String non lo gestiscono. – dalle
for(int i=0; i<yourString.length()
&& tolower(yourString[i])!=yourLoweredChar; i++)
{
return i;
}
return -1;
Se viene restituito -1 allora il vostro char di destinazione non c'è
altro dà la prima occurrance del char
Prima di fare niente di eccezionale, hanno uno sguardo al
http://www.gotw.ca/gotw/029.htm
e vedere se si utilizza una classe di tratti di carattere personalizzato non è quello che vuoi.
questo è quello che avrei suggerito, (lo stesso che @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. espressione regolare insensibile alle maiuscole in javascript
- 2. Array insensibile alle maiuscole in Lua
- 3. Dizionario insensibile alle maiuscole e minuscole con chiave Tuple
- 4. Come fare l'ordine insensibile alle maiuscole in Rails con postgresql
- 5. Confronto insensibile alle maiuscole/minuscole delle stringhe nello script shell
- 6. Ricerca insensibile alle maiuscole/minuscole nelle parole mongoid
- 7. Regex insensibile alle maiuscole senza utilizzare l'enumerazione RegexOptions
- 8. C'è un modo per velocizzare questa soluzione per un jQuery insensibile alle maiuscole: contiene un selettore?
- 9. Trova maiuscole/minuscole in Python ElementTree
- 10. Come rendere insensibile la distinzione tra maiuscole e minuscole?
- 11. Perché non è possibile definire un dizionario insensibile alle maiuscole/minuscole in C#?
- 12. Ordine insensibile alle maiuscole/minuscole con omlite e sqlite in Android
- 13. Come fare un caso insensibile alle maiuscole e alle minuscole per quanto riguarda l'accentazione in Oracle 10gR2 e JPA?
- 14. insensibilità alle maiuscole/minuscole in NSArray containsObject:
- 15. La stringa LINQ contiene un'altra stringa senza distinzione tra maiuscole
- 16. Vincolo non sensibile alle maiuscole/minuscole nel database Oracle
- 17. LINQ alle entità contiene ricerca maiuscole/minuscole
- 18. Query insensibili alle maiuscole e minuscole con Amazon Dynamo DB
- 19. Ricerca dizionario insensibile al maiuscolo?
- 20. Ricerca non sensibile alle maiuscole nei graal
- 21. PyPI è sensibile alle maiuscole/minuscole?
- 22. Url insensibili alle maiuscole per Django?
- 23. URL insensibili alle maiuscole con mod_rewrite
- 24. Query Parse containsString rende insensibile
- 25. OData e distinzione tra maiuscole e minuscole
- 26. Xcode trova nel documento bloccato con maiuscole e minuscole
- 27. Può Fluent Assertions utilizzare un confronto insensibile alla stringa per IEnumerable <string>?
- 28. Caso deserializzazione insensibile
- 29. Caso Restriction.IN insensibile
- 30. L'accento Regex è insensibile?
dipende dal significato di "case insensitive". Hai solo lettere ASCII o hai bisogno di regole di confronto Unicode complete? – Philipp