¿Cuál es la manera más rápida para comparar una cadena con una matriz de cadenas en C# 2.0La forma más rápida para comparar una cadena con una matriz de cadenas en C# 2.0
Respuesta
¿Quiere decir para ver si la cadena está en la matriz? No recuerdo si las matrices admiten el método .Contains(), de lo contrario, cree una lista < string>, agregue su matriz a la lista a través de AddRange(), luego llame a list.Contains ({string to compare}). Devolverá un valor booleano que indica si la cadena está o no en la matriz.
Si usted está haciendo esto muchas veces con un único matriz, debe ordenar la matriz y la búsqueda binaria que:
Array.Sort(array);
int index = Array.BinarySearch(array, input);
// if (index < 0)
// does not exists, "items > ~index" are larger and "< ~index" are smaller
// otherwise, "items > index" are larger and "< index" are smaller.
de lo contrario sólo echa toda la gama ingenuamente:
bool exists = Array.IndexOf(array, input) >= 0;
Si va a hacerlo muchas veces, hay búsquedas más eficientes que una búsqueda binaria (suponiendo que sea razonablemente grande, de todos modos). Me gustaría buscar algo basado en hash, p. HashSet. –
Sí. El debate de la tabla de hash/árbol binario de búsqueda ... Ambos son mejores que buscar todo el conjunto, sin embargo. HashSet solo está disponible en 3.5 embargo. –
¿Qué tipo de comparación quieres? ¿Desea saber si la cadena dada está en la matriz?
bool targetStringInArray = array.Contains(targetString);
¿Desea una matriz de valores de comparación (positivo, negativo, cero)?
var comparisons = array.Select(x => targetString.CompareTo(x));
Si usted está comprobando para la contención (es decir, la primera opción) y vas a hacer esto con múltiples cadenas, probablemente sería mejor construir un HashSet<string>
de la matriz:
var stringSet = new HashSet<string>(array);
if (stringSet.Contains(firstString)) ...
if (stringSet.Contains(secondString)) ...
if (stringSet.Contains(thirdString)) ...
if (stringSet.Contains(fourthString)) ...
- 1. ¿La forma más rápida de convertir una matriz de cadenas en una matriz doble?
- 2. Forma más rápida (rendimiento) de convertir una cadena en una matriz de bytes [] en C#
- 3. La forma más rápida/más eficiente de comparar dos matrices de cadenas Javascript
- 4. La forma más rápida de encontrar una Cadena en una matriz de cadena
- 5. ¿Existe una "forma más rápida" de construir cadenas en Java?
- 6. ¿Cuál es la forma más rápida de convertir una matriz de flotadores en una cadena?
- 7. ¿Cuál sería la forma más rápida de eliminar las Nuevas líneas de una Cadena en C#?
- 8. manera más rápida de comparar cadenas en python
- 9. la conversión de una lista de cadenas en una matriz numpy de una manera más rápida
- 10. C# - La forma más rápida de encontrar un conjunto de cadenas en otra cadena
- 11. ¿La forma más rápida de convertir cadenas a binario?
- 12. La forma más rápida de analizar cadenas json (sin jquery)
- 13. La forma más rápida para dividir una cadena concatenada en una tupla e ignorar las cadenas vacías
- 14. ¿Cuál es la forma más rápida de comparar cadenas en Java?
- 15. ¿La forma más rápida de poner a cero una matriz de 2d en C?
- 16. ¿Cuál es la forma portátil más rápida de copiar una matriz en C++
- 17. Mejor/más rápida forma de llenar una gran matriz en C#
- 18. La forma más rápida de implosionar una matriz asociativa con las claves
- 19. C - Separar una cadena en una matriz de cadenas
- 20. La forma más rápida de reemplazar cadenas en PHP
- 21. ¿Cuál es la forma más rápida de analizar una cadena JSON en una tabla SQLite?
- 22. reforma de datos (una forma más rápida)
- 23. manera más rápida para reemplazar cadena en una plantilla
- 24. ¿Es una buena práctica comparar la cadena C# con '=='?
- 25. La forma más rápida de leer una columna de números en una matriz
- 26. La forma más rápida para ordenar cada fila de una matriz grande en I
- 27. ¿La forma más rápida de encontrar la cadena más similar a una entrada?
- 28. La forma más rápida de unificar una lista en Python
- 29. ¿La forma más rápida de copiar el contenido de un vector en una matriz?
- 30. C# Compruebe si la cadena contiene coincidencias en una matriz de cadenas
Correcto, en 2.0 tendría que hacer '(new List (array)). Contiene (targetString);' - pero a partir de 3.5 tiene el método de extensión IEnumerable .Contiene el método de extensión, por lo que también está disponible para matrices. –
Groo
En 2.0, puede verificar si la matriz contiene un valor específico o no con un simple 'Array.IndexOf (arr, val)> = 0'. –