Solo quería saber cómo puedo determinar si un primer carácter de NSStrings es un número.Determine si el primer carácter de NSString es un número
Respuesta
BOOL hasLeadingNumberInString(NSString* s) {
if (s)
return [s length] && isnumber([s characterAtIndex:0]);
else
return NO;
}
En t Si está manejando muchas NSStrings a la vez (como recorrer una matriz) y desea verificar el formato de cada uno, como los números iniciales, es mejor incluir cheques para que no intente evaluar una cadena vacía o inexistente.
Ejemplo:
NSString* s = nil; //Edit: s needs to be initialized, at the very least, to nil.
hasLeadingNumberInString(s); //returns NO
hasLeadingNumberInString(@""); //returns NO
hasLeadingNumberInString(@"0123abc"); //returns YES
Comprobar el valor de retorno de:
[myString rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]];
Si el valor de la gama location
devuelto es 0
, que tiene un partido en el primer carácter.
Esto podría ser muy lento para las cadenas largas, y si el usuario introduce la stting podría ser de cualquier longitud. (Consulte el comentario de la orden (N)) –
¿Ha comprobado realmente que el método escanea toda la cadena? Sería realmente mal implementado si lo hiciera. De la documentación: "Encuentra y devuelve el rango en el receptor del primer personaje de un juego de caracteres determinado". Me parece que le gusta que se detenga una vez que encuentra una coincidencia. –
Pensando más en ello, lo que dije antes debería ser cierto al menos si hay una coincidencia positiva en el primer personaje. De lo contrario, la cadena se analizará por completo (en el peor de los casos cuando no haya una coincidencia en toda la cadena). –
Sí. Usted puede hacer:
NSString *s = ...; // a string
unichar c = [s characterAtIndex:0];
if (c >= '0' && c <= '9') {
// you have a number!
}
O incluso isdigit ([s characterAtIndex: 0])? – Tommy
Puedo pensar en dos maneras de hacerlo. Se podría utilizar
[string rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]].location == 0
O usted podría utilizar
[[NSCharacterSet decimalDigitCharacterSet] characterIsMember:[string characterAtIndex:0]]
No usaría ninguno de estos. Escanean la cadena o (N). Si solo le importa el primer carácter, se debe usar una solución o (1). – Scott
El segundo no analiza la cadena. Dependiendo de cómo se implemente NSCharacterSet, podría escanear el conjunto o podría ser una prueba muy parecida a su respuesta a continuación. – Anomie
También podría ser que decimalDigitCharacterSet arroje un objeto autorellenado asignado que cuando se lo llama muchas veces matará el rendimiento. –
En lugar de utilizar una llamada que escanea toda la cadena, lo mejor es sacar el primer carácter a continuación, ver lo que es:
char test = [myString characterAtIndex:0];
if (test >= '0' && test <= '9')
return YES
else
return NO
- 1. Determine si un carácter es alfabético
- 2. Ruby: determine si un número es un número primo
- 3. detectar si NSString es un número flotante
- 4. ¿Cómo puedo averiguar si el primer carácter de una cadena es un número en VB.NET?
- 5. ¿Cómo puedo averiguar si el primer carácter de una cadena es un número?
- 6. cómo comprobar si el carácter es un número entero
- 7. Determine si char es un número o una letra
- 8. Determine si NSNumber es NaN
- 9. Determine si un QFont admite cierto carácter UTF-8
- 10. Cómo obtener un solo carácter NSString de un NSString
- 11. Cómo comprobar si NSString comienza con un cierto carácter
- 12. ¿Es usted primer número
- 13. En Objective-C Determine si una propiedad es un int, float, double, NSString, NSDate, NSNumber, etc.
- 14. Determine si un tipo es estático
- 15. ¿Cómo puedo verificar si el primer carácter de mi cadena es un carácter de espacio o tabulación?
- 16. Determine qué tan ancho es un carácter procesado en .NET
- 17. de quitar el primer carácter de una cadena si es igual a algo
- 18. Determine si el objeto es entero
- 19. cambiar el primer carácter en un campo
- 20. ¿Es posible obtener solo el primer carácter de una Cadena?
- 21. grupo por el primer carácter
- 22. Cómo insertar un carácter en un NSString
- 23. Eliminar el último carácter de NSString
- 24. cómo determinar si un carácter es un carácter chino
- 25. Encontrar un carácter ruso en NSString
- 26. Cómo mostrar el último carácter de NSString *
- 27. Primer carácter mayúscula Lua
- 28. Recuperando el primer dígito de un número
- 29. Compruebe si el valor es un número
- 30. Eliminar el primer carácter de una cadena si es una coma
me gusta este. Muchas aplicaciones se cuelgan cuando aparece una cadena inesperada nulo o de longitud cero. Los desarrolladores nunca intentan dejar el campo en blanco u otras rarezas. –
NSString * s; hasLeadingNumberInString (s); // devuelve NO no va a funcionar, ya que s es un número aleatorio, no es nulo. (punto menor que el método es correcto, solo use NSString * s = nil; para la prueba. –
Tom es correcto. Mi método asume que s es, al menos, inicializar a cero o algo más. – Beljoda