반응형
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];
어떤 아이디어?
이것을 시도하십시오 : 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)
스위프트 버전 :
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;
}
반응형
'development' 카테고리의 다른 글
CodeIgniter activerecord, 마지막 삽입 ID를 검색 하시겠습니까? (0) | 2020.06.11 |
---|---|
Docker-compose : npm 설치가 성공한 후 볼륨에 node_modules가 없습니다. (0) | 2020.06.11 |
jar 이슈의 maven 최종 이름 제어 (0) | 2020.06.11 |
파일이 존재하는 경우에만 Ant 대상을 실행하는 Ant 태스크? (0) | 2020.06.11 |
Visual Studio (및 / 또는 ReSharper)를 사용하여 클래스 필드에서 생성자를 어떻게 생성합니까? (0) | 2020.06.11 |