2017-02-09 2 views
0

이렇게 해시 태그를 감지 할 수 있습니다.해시 태그를 포함한 해시 태그 검색

+ (NSArray *)getHashArrayWithInputString:(NSString *)inputStr 
{ 
    NSError *error = nil; 
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"#(\\w+)" options:0 error:&error]; 

    NSArray *matches = [regex matchesInString:inputStr options:0 range:NSMakeRange(0, inputStr.length)]; 
    NSMutableArray *muArr = [NSMutableArray array]; 
    for (NSTextCheckingResult *match in matches) { 
     NSRange wordRange = [match rangeAtIndex:1]; 
     NSString* word = [inputStr substringWithRange:wordRange]; 

     NSCharacterSet* notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 
     if ([word rangeOfCharacterFromSet:notDigits].location == NSNotFound) 
     { 
      // newString consists only of the digits 0 through 9 
     } 
     else 
     [muArr addObject:[NSString stringWithFormat:@"#%@",word]]; 
    } 
    return muArr; 
} 

문제 inputStr은 "& #D D"인 경우에만 #D를 검출 할 수 있다는 것이다. 어떻게해야합니까?

+0

도움이 될 수도 있습니다. http://stackoverflow.com/questions/7934688/how-to-see-if-an-nsstring-starts-with-a-other-other-string – raki

답변

1

reg 표현식을 사용하려면 허용하려는 특수 문자를 추가하십시오.

#(\\w+([&]*\\w*)*) //To allow #D&D&d... 

#(\\w+([&-]*\\w*)*) //To allow both #D&D-D&... 

원하는대로 다른 특수 문자를 추가하는 것과 같습니다.

그래서이 정규 표현식을 변경하면됩니다.

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"#(\\w+([&]*\\w*)*)" options:0 error:&error]; 
+2

무엇을? 'D & D & D'에 대해? :) 힌트, 괄호가 도움이 될 것입니다. – Sulthan

+0

@Sulthan Thanx에 대한 제안, Edit for answer. –

1

나는이 lib 디렉토리를 사용했다 : https://cocoapods.org/pods/twitter-text

그것은 도울 수있는 방법 (NSArray *)hashtagsInText:(NSString *)text checkingURLOverlap (BOOL)checkingURLOverlap와 TwitterText 클래스가있다.

지난 번이 포드를 사용 했었는데 그 때 좋았습니다. 오늘은 여전히 ​​괜찮은지 확인해야합니다. 내가 알게 해 :) 행운을 빕니다