Odpowiedzi:
Możesz użyć -hasPrefix:
metody NSString
:
Cel C:
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
Szybki:
var output:String?
if string.hasPrefix("*") {
output = string.substringFromIndex(string.startIndex.advancedBy(1))
}
Możesz użyć:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
hasPrefix działa szczególnie dobrze. na przykład, jeśli szukałeś http URL w NSString
, należałoby użyć componentsSeparatedByString
, aby utworzyć NSArray
i iterate tablica użyciu hasPrefix
znaleźć elementy, które zaczynają się od 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
zwraca wartość logiczną wskazującą, czy dany ciąg pasuje do początkowych znaków odbiornika.
- (BOOL)hasPrefix:(NSString *)aString,
parametr aString
to ciąg, którego szukasz Zwracana wartość to TAK, jeśli ciąg znaków pasuje do początkowych znaków odbiornika, w przeciwnym razie NIE. Zwraca NIE, jeśli aString
jest pusty.
Zastosowanie characterAtIndex:
. Jeśli pierwszym znakiem jest gwiazdka, użyj, substringFromIndex:
aby uzyskać ciąg sans „*”.
NSString *stringWithoutAsterisk(NSString *string) {
NSRange asterisk = [string rangeOfString:@"*"];
return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}
Inne podejście do tego…
Niech może komuś pomóc ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Jako ogólniejszą odpowiedź spróbuj użyć metody hasPrefix. Na przykład poniższy kod sprawdza, czy ciąg zaczyna się od 10, który jest kodem błędu używanym do identyfikowania określonego problemu.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
To może pomóc? :)
Po prostu wyszukaj znak o indeksie 0 i porównaj go z wartością, której szukasz!
Ten miły kawałek kodu znalazłem przypadkiem i jeszcze go nie widziałem na Stackie. Działa tylko wtedy, gdy istnieją postacie, które chcesz usunąć lub zmienić, co jest wygodne w wielu scenariuszach. Jeśli znak / znaki nie istnieją, nie zmieni twojego NSString:
NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];
Tak to wykorzystuję:
//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);
Ta jedna linia jest bardzo łatwa do wykonania trzech czynności w jednym:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
hasPrefix:@"word"
sprawdzasz, czy istnieje wiele wartości przechowywanych w plikuNSArray
? Na przykładNSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
:?