Відповіді:
Можна використовувати -hasPrefix:
метод NSString
:
Завдання-C:
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
Швидкий:
var output:String?
if string.hasPrefix("*") {
output = string.substringFromIndex(string.startIndex.advancedBy(1))
}
Особливо добре працює hasPrefix . наприклад, якщо ви шукали URL-адресу http у NSString
, ви б використовувалиcomponentsSeparatedByString
для створення NSArray
масиву і ітерації, використовуючи hasPrefix
для пошуку елементів, що починаються з 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
повертає булеве значення, яке вказує, чи відповідає дана рядок початковим символам приймача.
- (BOOL)hasPrefix:(NSString *)aString,
Параметр aString
- це рядок, для якого ви шукаєте Return Value - ТАК, якщо aString відповідає початковим символам приймача, інакше НІ. Повертає НІ, якщо aString
порожній.
Використовуйте characterAtIndex:
. Якщо перший символ є зірочкою, використовуйте substringFromIndex:
для отримання рядка sans '*'.
Ще один підхід до цього ..
Нехай це допоможе комусь ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Як більш загальну відповідь, спробуйте скористатися методом hasPrefix. Наприклад, наведений нижче код перевіряє, чи починається рядок з 10, що є кодом помилки, який використовується для ідентифікації певної проблеми.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
Це може допомогти? :)
Просто знайдіть символу в індексі 0 і порівняйте його зі значенням, яке ви шукаєте!
Цей хороший маленький код я знайшов випадково, і я ще не бачив його, запропонованого в Stack. Він працює лише в тому випадку, якщо символи, які ви хочете видалити або змінити, існують, що зручно у багатьох сценаріях. Якщо символів / s не існує, це не змінить ваш NSString:
NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];
Ось як я його використовую:
//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);
Цей один рядок дуже просто виконати три дії в одній:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
hasPrefix:@"word"
щоб перевірити наявність кількох значень, збережених уNSArray
? Наприклад:NSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
?