Comment vérifier si une chaîne NSString commence par un certain caractère (le caractère *).
Le * est un indicateur pour le type de la cellule, j'ai donc besoin du contenu de cette chaîne NSString sans le *, mais je dois savoir si le * existe déjà.
Vous pouvez utiliser la méthode -hasPrefix:
de 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))
}
Vous pouvez utiliser:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
hasPrefix fonctionne particulièrement bien. par exemple, si vous recherchez une URL http dans un NSString
, vous utiliserez componentsSeparatedByString
pour créer un NSArray
et l'itération du tableau à l'aide de hasPrefix
pour rechercher les éléments qui commencez par 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
renvoie une valeur booléenne indiquant si une chaîne donnée correspond aux premiers caractères du destinataire.
- (BOOL)hasPrefix:(NSString *)aString,
le paramètre aString
est une chaîne que vous recherchez. La valeur renvoyée est YES si une chaîne correspond aux caractères de début du récepteur, sinon, NON. Renvoie NO si aString
est vide.
Utilisez characterAtIndex:
. Si le premier caractère est un astérisque, utilisez substringFromIndex:
pour obtenir la chaîne sans '*'.
NSString *stringWithoutAsterisk(NSString *string) {
NSRange asterisk = [string rangeOfString:@"*"];
return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}
ne autre approche pour le faire ..
Puisse-t-il aider quelqu'un ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Pour une réponse plus générale, essayez d’utiliser la méthode hasPrefix. Par exemple, le code ci-dessous vérifie si une chaîne de caractères commence par 10, code d'erreur utilisé pour identifier un problème donné.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
Cela pourrait aider? :)
Recherchez simplement le personnage à l’index 0 et comparez-le à la valeur recherchée!
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
Ce joli petit morceau de code que j'ai trouvé par hasard, et je ne l'ai pas encore vu suggéré sur Stack. Cela ne fonctionne que si les caractères que vous souhaitez supprimer ou modifier existent, ce qui est pratique dans de nombreux scénarios. Si le/les caractère (s) n’existent pas, cela n’affectera pas votre NSString:
NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];
Voici comment je l'utilise:
//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);
Cette ligne est super facile à effectuer trois actions en une: