2017-02-09 5 views
0

このようなハッシュタグを検出できます。&hastagを含むハッシュタグを検出する

+ (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-certain-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の提案については、その回答も編集してください。 –

1

私は、このLIBを使用していた。 https://cocoapods.org/pods/twitter-text

は、それは助けることができる方法 (NSArray *)hashtagsInText:(NSString *)text checkingURLOverlap (BOOL)checkingURLOverlapとTwitterTextクラスがあります。

前回このポッド年前に使用しましたが、それは素晴らしい結果でした。今日は、それがまだOKかどうかを確認する必要があります。私に教えてください:)幸運

関連する問題