Как увидеть, если NSString начинается с определенной другой строки?
Я пытаюсь проверить, если строка, которую я собираюсь использовать в качестве URL-адрес начинается с HTTP. Так я пытаюсь проверить сейчас не работают. Вот мой код:
NSMutableString *temp = [[NSMutableString alloc] initWithString:@"http://"];
if ([businessWebsite rangeOfString:@"http"].location == NSNotFound){
NSString *temp2 = [[NSString alloc] init];
temp2 = businessWebsite;
[temp appendString:temp2];
businessWebsite = temp2;
NSLog(@"Updated BusinessWebsite is: %@", businessWebsite);
}
[web setBusinessWebsiteUrl:businessWebsite];
какие идеи?
5 ответов:
попробуйте это:
if ([myString hasPrefix:@"http"]).кстати, ваш тест должен быть
!= NSNotFoundвместо== NSNotFound. Но скажите, что Ваш URL-адресftp://my_http_host.com/thing, это будет соответствовать, но не стоит.
мне нравится использовать этот метод:
if ([[temp substringToIndex:4] isEqualToString:@"http"]) { //starts with http }или еще проще:
if ([temp hasPrefix:@"http"]) { //do your stuff }
Если вы проверяете " http:", вам, вероятно, понадобится поиск без учета регистра:
NSRange prefixRange = [temp rangeOfString:@"http" options:(NSAnchoredSearch | NSCaseInsensitiveSearch)]; if (prefixRange.location == NSNotFound)
Swift версия:
if line.hasPrefix("#") { // checks to see if a string (line) begins with the character "#" }
Это мое решение проблемы. Он удалит буквы, которые не нужны и нечувствительны к регистру.
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { return [self generateSectionTitles]; } -(NSArray *)generateSectionTitles { NSArray *alphaArray = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", nil]; NSMutableArray *sectionArray = [[NSMutableArray alloc] init]; for (NSString *character in alphaArray) { if ([self stringPrefix:character isInArray:self.depNameRows]) { [sectionArray addObject:character]; } } return sectionArray; } -(BOOL)stringPrefix:(NSString *)prefix isInArray:(NSArray *)array { for (NSString *str in array) { //I needed a case insensitive search so [str hasPrefix:prefix]; would not have worked for me. NSRange prefixRange = [str rangeOfString:prefix options:(NSAnchoredSearch | NSCaseInsensitiveSearch)]; if (prefixRange.location != NSNotFound) { return TRUE; } } return FALSE; } - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { NSInteger newRow = [self indexForFirstChar:title inArray:self.depNameRows]; NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:newRow inSection:0]; [tableView scrollToRowAtIndexPath:newIndexPath atScrollPosition:UITableViewScrollPositionTop animated:NO]; return index; } // Return the index for the location of the first item in an array that begins with a certain character - (NSInteger)indexForFirstChar:(NSString *)character inArray:(NSArray *)array { NSUInteger count = 0; for (NSString *str in array) { //I needed a case insensitive search so [str hasPrefix:prefix]; would not have worked for me. NSRange prefixRange = [str rangeOfString:character options:(NSAnchoredSearch | NSCaseInsensitiveSearch)]; if (prefixRange.location != NSNotFound) { return count; } count++; } return 0; }
Comments