Risposte:
Puoi usare il -hasPrefix:
metodo di NSString
:
Objective-C:
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
Swift:
var output:String?
if string.hasPrefix("*") {
output = string.substringFromIndex(string.startIndex.advancedBy(1))
}
Puoi usare:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
hasPrefix funziona particolarmente bene. ad esempio, se stavi cercando un URL http in a NSString
, utilizzeresti componentsSeparatedByString
per creare NSArray
e iterare l'array usando hasPrefix
per trovare gli elementi che iniziano 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
restituisce un valore booleano che indica se una determinata stringa corrisponde ai caratteri iniziali del destinatario.
- (BOOL)hasPrefix:(NSString *)aString,
Il parametro aString
è una stringa che stai cercando Il valore restituito è SÌ se aString corrisponde ai caratteri iniziali del destinatario, altrimenti NO. Restituisce NO se aString
è vuoto.
Usa characterAtIndex:
. Se il primo carattere è un asterisco, utilizzare substringFromIndex:
per ottenere la stringa senza '*'.
Un altro approccio per farlo ..
Possa aiutare qualcuno ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Come risposta più generale, prova a utilizzare il metodo hasPrefix. Ad esempio, il codice seguente controlla se una stringa inizia con 10, che è il codice di errore utilizzato per identificare un determinato problema.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
Questo potrebbe aiutare? :)
Basta cercare il personaggio all'indice 0 e confrontarlo con il valore che stai cercando!
Questo bel po 'di codice l'ho trovato per caso, e devo ancora vederlo suggerito su Stack. Funziona solo se esistono i caratteri che desideri rimuovere o modificare, il che è conveniente in molti scenari. Se il / i personaggio / i non esiste / i, non cambierà la tua NSString:
NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];
Ecco come 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);
Questa linea è semplicissima per eseguire tre azioni in una:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
hasPrefix:@"word"
controllare più valori memorizzati in unNSArray
? Ad esempioNSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
:?