objective-c - unir - textos en orden alfabetico
si la cadena es alfabéticamente mayor que otra cadena en el objetivo (2)
Estoy tratando de usar una sentencia if para determinar cuál de las 2 cadenas aparece primero en orden alfabético. Al igual que con los números y mayor y menor que:
if (1 < 2) {
solo con cuerdas:
if(@"ahello" < @"bhello") {
O tendría que tener una cadena que contenga todas las letras y luego revisar el índice de la primera letra en cada cadena y ver qué índice es mayor, y el índice que es menor que el otro aparece primero en el alfabeto y luego si son ¿Igual movimiento a la siguiente char y repetir?
Lo que puedes hacer es:
NSString *stringOne = @"abcdef";
NSString *stringTwo = @"defabc";
NSComparisonResult result = [stringOne compare:stringTwo];
if (result == NSOrderedAscending) // stringOne < stringTwo
...
if (result == NSOrderedDescending) // stringOne > stringTwo
...
if (result == NSOrderedSame) // stringOne == stringTwo
...
También hay otros métodos para realizar diferentes tipos de comparaciones (como la insensibilidad a los casos, la insensibilidad diacrítica, etc.), pero el resultado de la comparación todavía puede tratarse como el anterior. Alternativamente, a algunas personas les resulta más fácil comparar el result
con 0. El operador usado para comparar el result
con 0 sería el mismo operador que se usa en otros idiomas donde las comparaciones de cadenas se pueden hacer directamente:
if (result < 0) // stringOne < stringTwo
...
if (result > 0) // stringOne > stringTwo
...
if (result == 0) // stringOne == stringTwo
...
La mayoría (si no todos) de los métodos de compare:...
de NSString son envoltorios para compare:options:range:locale:
Los diferentes tipos de opciones que puede pasar se pueden encontrar here .
NSString tiene una gran cantidad de métodos de compare:
para hacer lo que usted quiere. Algunos son muy simples y otros tienen un montón de opciones que puedes usar para personalizar el comportamiento. Echa un vistazo a la documentation .