¿Existe un método find() insensible a mayúsculas y minúsculas para std :: string?Cadena insensible a mayúsculas y minúsculas :: find
Respuesta
Puede usar mayúsculas y minúsculas en ambas cadenas y usar el método de búsqueda normal. (Nota: este enfoque puede no ser correcto si tiene una cadena Unicode.)
En Boost también hay ifind_first
para búsqueda insensible a mayúsculas y minúsculas. (tenga en cuenta que devuelve un rango en lugar de 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 Boost.String Algorithms es un requisito previo para proyectos :) –
Acabo de dar ifind_first una unidad de prueba, y fue más lento que la conversión de las 2 cadenas a mayúsculas y minúsculas (utilizando boost) y usando std :: string :: find. – goji
Pero no funcionará para Unicode en el caso general. "ß" y "SS" deberían ser iguales, pero Boost String Algorithms no maneja esto. – dalle
for(int i=0; i<yourString.length()
&& tolower(yourString[i])!=yourLoweredChar; i++)
{
return i;
}
return -1;
Si se devuelve -1, entonces su char del objetivo no está allí
demás da la primera ocurrencia del carbón
Antes de hacer cualquier cosa de lujo, echar un vistazo a
http://www.gotw.ca/gotw/029.htm
y vea si el uso de una clase de rasgos de caracteres personalizados no es lo que desea.
Esto es lo que habría sugerido, (el mismo que @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. Insensible a mayúsculas/minúsculas #define
- 2. Una lista insensible a mayúsculas y minúsculas
- 3. LINQ contiene insensible a mayúsculas y minúsculas
- 4. Cadena KeyedCollection Insensible a las mayúsculas y minúsculas
- 5. cadena LINQ contiene otra cadena insensible a mayúsculas/minúsculas
- 6. ordenación de lista insensible a mayúsculas y minúsculas, sin minúsculas?
- 7. JavaScript: búsqueda insensible a mayúsculas/minúsculas
- 8. Búsqueda de lista insensible a mayúsculas/minúsculas
- 9. KVC insensible a mayúsculas/minúsculas en Cocoa?
- 10. SOLR Búsqueda insensible a mayúsculas/minúsculas
- 11. Insensible a mayúsculas/minúsculas reemplace todo
- 12. Búsqueda insensible a mayúsculas/minúsculas usando Hibernate
- 13. Regex insensible a mayúsculas y minúsculas en javascript
- 14. Diccionario insensible a mayúsculas/minúsculas no funciona
- 15. std insensible a mayúsculas y minúsculas :: conjunto de cadenas
- 16. Sustitución de cadenas insensible a mayúsculas y minúsculas en JavaScript?
- 17. ¿SHA-256 es insensible a las mayúsculas y minúsculas?
- 18. Linq a Sql distinción insensible a mayúsculas y minúsculas
- 19. Deserialización de propiedades insensible a las mayúsculas y minúsculas Json.NET
- 20. Búsqueda insensible a mayúsculas y minúsculas con $ en
- 21. Arreglo insensible a mayúsculas y minúsculas en Lua
- 22. búsqueda insensible a mayúsculas y minúsculas de MySQL?
- 23. Findall insensible a mayúsculas y minúsculas en Python ElementTree
- 24. ¿Búsqueda del diccionario insensible a mayúsculas y minúsculas?
- 25. Analizador-analizador Scala insensible a las mayúsculas y minúsculas
- 26. Globo insensible a mayúsculas y minúsculas en zsh/bash
- 27. Collation insensible a mayúsculas y minúsculas en Oracle con LIKE
- 28. Búsqueda insensible a mayúsculas y minúsculas en el campo varbinary?
- 29. Búsqueda insensible a mayúsculas y minúsculas en Sybase
- 30. Insensible a mayúsculas y minúsculas Contiene con Dynamic Linq
Depende del significado de "entre mayúsculas y minúsculas." ¿Tiene solo letras ASCII o necesita una intercalación Unicode completa? – Philipp