Respuestas:
Puedes usar el -hasPrefix:
método 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))
}
Puedes usar:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
hasPrefix funciona especialmente bien. por ejemplo, si estaba buscando una url http en a NSString
, la usaría componentsSeparatedByString
para crear una NSArray
e 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.
Uso characterAtIndex:
. Si el primer carácter es un asterisco, úselo substringFromIndex:
para obtener la cadena sin '*'.
Otro enfoque para hacerlo ...
Que pueda ayudar a alguien ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Como respuesta más general, intente usar el método hasPrefix. Por ejemplo, el siguiente código verifica si una cadena comienza con 10, que es el código de error utilizado para identificar un determinado problema.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
Esto podría ayudar? :)
¡Simplemente busca el personaje en el índice 0 y compáralo con el valor que estás buscando!
Este pequeño 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 los caracteres 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 = @"&amp;";
//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 muy fácil de realizar tres acciones en una:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
hasPrefix:@"word"
verificar múltiples valores almacenados en unNSArray
? Por ejemploNSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
:?