Estoy tratando de comparar 2 cadenas alfabéticamente para fines de clasificación. Por ejemplo, quiero tener un cheque booleano como if('aaaa' < 'ab')
. Lo intenté, pero no me está dando los resultados correctos, así que supongo que esa no es la sintaxis correcta. ¿Cómo hago esto en jquery o Javascript?comparando 2 cadenas alfabéticamente con fines de clasificación
Respuesta
Veamos algunos casos de prueba - intente ejecutar las siguientes expresiones en su consola JS:
"a" < "b"
"aa" < "ab"
"aaa" < "aab"
todos vuelven realidad.
JavaScript compara las cadenas carácter por carácter y "a" aparece antes que "b" en el alfabeto, por lo tanto, menos que.
En su caso es que funciona como tal -
1. "un aaa" < "un b"
compara los primeros dos caracteres "a" - todos iguales, vamos a pasar al siguiente carácter.
2. "Un un aa" < "un b"
compara el segundo caracteres "a" en contra de "b" - grito! "a" viene antes de "b". Devuelve verdadero.
para la discusión sobre caracteres especiales como Č, č, Š, š, Ž, ž, ver http://stackoverflow.com/questions/6909126/javascript-sort-with-unicode – dsdsdsdsd
¡Impresionante que esté incorporado de forma nativa! –
Algo a tener en cuenta serían las mayúsculas. '" a "<" b "=== true'' "a" <"B" === false'. – MegaXLR
Sólo recuerde que la comparación de cadenas como "x"> "X" mayúsculas y minúsculas
"aa" < "ab" //true
"aa" < "Ab" //false
Usted dice que la comparación es con fines de clasificación. Entonces sugiero lugar:
"a".localeCompare("b");
Devuelve -1
desde "a" < "b"
, 1
o 0
de otro modo, al igual que lo necesario para Array.prototype.sort()
Tenga en cuenta que la clasificación depende de la configuración regional. P.ej. en alemán, ä
es una variante de a
, por lo que "ä".localeCompare("b", "de-DE")
devuelve -1
. En sueco, ä
es una de las últimas letras del alfabeto, por lo que "ä".localeCompare("b", "se-SE")
devuelve 1
.
Sin el segundo parámetro para localeCompare
, se utiliza la configuración regional del navegador. Que en mi experiencia nunca es lo que quiero, porque luego se ordenará de manera diferente que el servidor, que tiene una configuración regional fija para todos los usuarios.
+1 también vale la pena mencionar que esto también está bien para los casos ('" aa ".localeCompare (" ab ")' == "aa" .localeCompare ("Ab") para cualquier localidad que se me ocurra) y funciona incluso en versiones antiguas de IE. Debe ser la respuesta aceptada! – user568458
+1 para Peter; Esto es más compatible con la forma en que funciona la ordenación de arreglos de Javascript, por lo que es más útil, y creo que es más de lo que el OP estaba pidiendo. – Grandclosing
"a".localeCompare("b")
debe volver realidad -1
desde a
tipo antes b
Si se refería a esto como un comentario a mi respuesta, tiene razón. Mi respuesta solía mostrar incorrectamente el resultado como 1, así que lo corregí. –
- 1. Cómo comparar 2 cadenas alfabéticamente
- 2. comparando cadenas en vb
- 3. Comparando cadenas en EL
- 4. comparando 2 configuraciones phpinfo
- 5. comparando cadenas en bash
- 6. Comparando cadenas con el formato "2.0.1", "2.0.09"
- 7. C# Comparando cadenas con casos diferentes
- 8. comparando dos cadenas en SQL Server
- 9. C# tabla de clasificación por 2 columnas
- 10. Comparando 2 objetos personalizados - C#
- 11. Análisis de cadenas y clasificación
- 12. Comparando cadenas de fechas en Java
- 13. Comparando cadenas largas por sus valores hash
- 14. Ordenando y comparando cadenas por localidades en Haskell?
- 15. Comparando dos cadenas en inglés para similitudes
- 16. Clasificación compleja con parámetros múltiples?
- 17. Algoritmo eficiente de clasificación de cadenas
- 18. Clasificación de cadenas basada en Ontology
- 19. Java: clasificación complicada de cadenas prefijadas (ArrayLists)
- 20. iPhone - Clasificación de NSMutableArray contiene NSDictionary con 2 llaves
- 21. Clasificación de cadenas usando Combinar Ordenar
- 22. ¿Cómo puedo ordenar una matriz de cadenas alfabéticamente cuando las cadenas contienen åäö?
- 23. clasificación de 2 dimensiones Javascript gama
- 24. Ordenar JSON alfabéticamente
- 25. Comparando cadenas de fechas usando la biblioteca de tiempo joda
- 26. iPhone: CoreData, clasificación por 2 columnas
- 27. Comparando con valores NULL
- 28. C#: Comparando con nula
- 29. Comparando 2 gráficos creados por Boost Graph Library
- 30. Comparando 2 números en DOS Lote que no funciona
Ha visto http://stackoverflow.com/questions/1134976/how-may-i-sort-a-list-alphabetically -using-jquery? – j08691
Así es como lo haces. ¿Qué resultado esperas? La expresión ''aaaa '<' ab'' devuelve' true'. – Guffa