objective-c string cocoa-touch whitespace

objective c - ¿Cuál es la mejor manera de recortar el espacio en blanco de una cuerda en Cocoa Touch?



objective-c string (3)

Estás usando whitespaceAndNewlineCharacterSet, bien. Pero en lugar de usar scanUpToCharactersFromSet, ¿por qué no utilizar stringByTrimmingCharactersInSet? Algo como esto...

strResult = [strResult stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

EDITAR: No me di cuenta de que ya encontraste stringByTrimmingCharactersInSet hasta después de haber publicado esto.

Estoy buscando determinar si un valor de cadena de una entrada de usuario (UITextField) está "en blanco" si no es nulo. Comprobar si [textField.text isEqualToString:""] no es suficiente porque quiero evitar cualquier entrada en blanco / en blanco (como por ejemplo, algunos caracteres de espacio).

Parece que hay una indicación de una buena solución para mi problema particular en esta publicación de StOv .

Básicamente es algo como esto, pero sospecho que tiene que (o debería) ser una mejor manera:

NSString *strResult; NSScanner* scanner = [NSScanner scannerWithString:textField.text]; BOOL hasValidChars = [scanner scanUpToCharactersFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] intoString:&strResult]; // if hasValidChars == YES, we''ve got nonwhite space chars collected into strResult

Esto claramente solo funciona para mi circunstancia particular, y aun así fallaría si el primer personaje fuera un espacio pero los datos que quería seguir. Entonces, me doy cuenta de que Ruby me ha echado a perder un poco, pero debe haber un idioma probado y verdadero para recortar cadenas en Cocoa.

Aaa y la respuesta ya está ahí, mis disculpas:

Cadena de -stringByTrimmingCharactersInSet: lo haría:

Devuelve una nueva cadena creada al eliminar de ambos extremos los caracteres del receptor contenidos en un juego de caracteres determinado.

Todavía tengo curiosidad por saber si alguien tiene otras formas / preferidas de hacer esto.


Lo que estás buscando es

[string stringByReplacingOccurrencesOfString:@" " withString:@""] .

Eliminar el espacio en blanco en el medio de una cadena no se llama ''recorte''.

El recorte por definición funciona desde los bordes.


Para hacer esto más fácil para usted y en lugar de crear una subclase, puede modificar las clases Apple existentes y hacer algo como

// // NSString+MyExtensions.h // @interface NSString (MyExtensions) - (NSString *)trimmed; @end

y la implementación

// // NSString+MyExtensions.m // #import "NSString+MyExtensions.h" @implementation NSString (MyExtensions) - (NSString *)trimmed { return [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; } @end

Entonces, en cualquier lugar de su aplicación que use un NSString ,
ahora puede llamar a [@" hello world " trimmed] como a continuación

// // ViewController.m // #import "NSString+MyExtensions.h" @implementation ViewController - (void)viewDidLoad { NSString *string = @" This is a string "; NSLog(@"The original string: %@ /n The trimmed string: %@/n/n", string, [string trimmed]); string = @" "; if([string trimmed].length == 0) NSLog(@"%@", @"String is empty! :O"); } @end

Que imprimiría

The original string: This is a string The trimmed string: This is a string String is empty! :O