Antworten:
Sie können die -hasPrefix:
Methode verwenden von NSString
:
Ziel c:
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
Schnell:
var output:String?
if string.hasPrefix("*") {
output = string.substringFromIndex(string.startIndex.advancedBy(1))
}
Sie können verwenden:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
hasPrefix funktioniert besonders gut. zum Beispiel , wenn Sie suchen eine HTTP - URL in ein NSString
, würden Sie componentsSeparatedByString
ein erstellen NSArray
und die Iterierte das Array mit hasPrefix
den Elementen zu finden , die beginnen mit 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
Gibt einen Booleschen Wert zurück, der angibt, ob eine bestimmte Zeichenfolge mit den Anfangszeichen des Empfängers übereinstimmt.
- (BOOL)hasPrefix:(NSString *)aString,
Der Parameter aString
ist eine Zeichenfolge, nach der Sie suchen. Der Rückgabewert ist YES, wenn aString mit den Anfangszeichen des Empfängers übereinstimmt, andernfalls NO. Gibt NO zurück, wenn aString
es leer ist.
Verwenden Sie characterAtIndex:
. Wenn das erste Zeichen ein Sternchen ist, verwenden Sie substringFromIndex:
, um die Zeichenfolge ohne '*' abzurufen.
Ein anderer Ansatz, um es zu tun ..
Möge es jemandem helfen ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Versuchen Sie als allgemeinere Antwort die hasPrefix-Methode. Der folgende Code prüft beispielsweise, ob eine Zeichenfolge mit 10 beginnt. Dies ist der Fehlercode, mit dem ein bestimmtes Problem identifiziert wird.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
Das könnte helfen? :) :)
Suchen Sie einfach nach dem Zeichen bei Index 0 und vergleichen Sie es mit dem Wert, den Sie suchen!
Dieses nette kleine Stück Code habe ich zufällig gefunden, und ich habe es noch nicht auf Stack vorgeschlagen. Dies funktioniert nur, wenn die Zeichen, die Sie entfernen oder ändern möchten, vorhanden sind, was in vielen Szenarien praktisch ist. Wenn die Zeichen nicht vorhanden sind, ändert dies nichts an Ihrem NSString:
NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];
So benutze ich es:
//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);
Diese eine Zeile ist super einfach, um drei Aktionen in einer auszuführen:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
hasPrefix:@"word"
nach mehreren Werten zu suchen, die in einem gespeichert sindNSArray
? Zum Beispiel :NSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
?