如何查看NSString是否以某个其他string开头?
我想检查一下,我将要用作URL的string是否以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];
有任何想法吗?
试试这个: if ([myString hasPrefix:@"http"])
。
顺便说一句,你的testing应该是!= 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:”,你可能会想要不区分大小写的search:
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; }