objective-c nsstring

objective c - Cómo verificar si NSString comienza con un cierto personaje



objective-c (10)

Como una respuesta más general, intente usar el método hasPrefix. Por ejemplo, el siguiente código comprueba si una cadena comienza con 10, que es el código de error utilizado para identificar un problema determinado.

NSString* myString = @"10:Username taken"; if([myString hasPrefix:@"10"]) { //display more elegant error message }

¿Cómo verifica si una NSString comienza con un determinado carácter (el carácter *)?

El * es un indicador del tipo de celda, por lo que necesito los contenidos de esta NSString sin el *, pero necesito saber si el * existe.


Encontré este bonito código que encontré por casualidad, y aún no lo he visto sugerido en Stack. Solo funciona si los caracteres que desea eliminar o modificar existen, lo cual es conveniente en muchos escenarios. Si el / los personaje / s no existen, no alterará su NSString:

NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];

Así es como lo uso:

//declare what to look for NSString * suffixTorRemove = @"</p>"; NSString * prefixToRemove = @"<p>"; NSString * randomCharacter = @"</strong>"; NSString * moreRandom = @"<strong>"; NSString * makeAndSign = @"&"; //I AM INSERTING A VALUE FROM A DATABASE AND HAVE ASSIGNED IT TO returnStr returnStr = [returnStr stringByReplacingOccurrencesOfString:suffixTorRemove withString:@""]; returnStr = [returnStr stringByReplacingOccurrencesOfString:prefixToRemove withString:@""]; returnStr = [returnStr stringByReplacingOccurrencesOfString:randomCharacter withString:@""]; returnStr = [returnStr stringByReplacingOccurrencesOfString:moreRandom withString:@""]; returnStr = [returnStr stringByReplacingOccurrencesOfString:makeAndSign withString:@"&"]; //check the output NSLog(@"returnStr IS NOW: %@", returnStr);

Esta línea es súper fácil de realizar tres acciones en una:

  1. Comprueba tu cadena para los caracteres que no quieres
  2. Puede reemplazarlos con lo que quieras.
  3. No afecta el código circundante.


Puedes usar:

NSString *newString; if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) { newString = [myString substringFromIndex:1]; }



hasPrefix funciona especialmente bien. por ejemplo, si buscaba una URL http en una NSString , usaría componentsSeparatedByString para crear una NSArray y iterar la matriz usando hasPrefix para encontrar los elementos que comienzan con http.

NSArray *allStringsArray = [myStringThatHasHttpUrls componentsSeparatedByString:@" "] for (id myArrayElement in allStringsArray) { NSString *theString = [myArrayElement description]; if ([theString hasPrefix:@"http"]) { NSLog(@"The URL is %@", [myArrayElement description]); } }

hasPrefix devuelve un valor booleano que indica si una cadena dada coincide con los caracteres iniciales del receptor.

- (BOOL)hasPrefix:(NSString *)aString,

el parámetro aString es una cadena que está buscando. El valor de retorno es SÍ si aString coincide con los caracteres iniciales del receptor; de lo contrario, NO. Devuelve NO si aString está vacío.


Otro enfoque para hacerlo ..

Que pueda ayudar a alguien ...

if ([[temp substringToIndex:4] isEqualToString:@"http"]) { //starts with http }


Puede usar el método NSString : de NSString :

C objetivo:

NSString* output = nil; if([string hasPrefix:@"*"]) { output = [string substringFromIndex:1]; }

Rápido:

var output:String? if string.hasPrefix("*") { output = string.substringFromIndex(string.startIndex.advancedBy(1)) }


NSString *stringWithoutAsterisk(NSString *string) { NSRange asterisk = [string rangeOfString:@"*"]; return asterisk.location == 0 ? [string substringFromIndex:1] : string; }


NSString* expectedString = nil; if([givenString hasPrefix:@"*"]) { expectedString = [givenString substringFromIndex:1]; }