How to see if an NSString starts with a certain other string?

后端 未结 5 1729
无人及你
无人及你 2020-12-23 08:51

I am trying to check to see if a string that I am going to use as URL starts with http. The way I am trying to check right now doesn\'t seem to be working. Here is my code:<

相关标签:
5条回答
  • 2020-12-23 09:09

    If you're checking for "http:" you'll probably want case-insensitive search:

    NSRange prefixRange = 
        [temp rangeOfString:@"http" 
                    options:(NSAnchoredSearch | NSCaseInsensitiveSearch)];
    if (prefixRange.location == NSNotFound)
    
    0 讨论(0)
  • 2020-12-23 09:18

    Try this: if ([myString hasPrefix:@"http"]).

    By the way, your test should be != NSNotFound instead of == NSNotFound. But say your URL is ftp://my_http_host.com/thing, it'll match but shouldn't.

    0 讨论(0)
  • 2020-12-23 09:20

    I like to use this method:

    if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
      //starts with http
    }
    

    or even easier:

    if ([temp hasPrefix:@"http"]) {
        //do your stuff
    }
    
    0 讨论(0)
  • 2020-12-23 09:24

    This is my solution to the problem. It will remove the letters that are not necessary and is case insensitive.

        - (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;
    }
    
    0 讨论(0)
  • 2020-12-23 09:28

    Swift version:

    if line.hasPrefix("#") {
      // checks to see if a string (line) begins with the character "#"
    }
    
    0 讨论(0)
提交回复
热议问题