2014-05-14 16 views
0

我試圖在NSRegularExpression這樣的文本中找到「@」和「#」符號;使用NSRegularExpression查找並檢測「@」和「#」

NSString *testString = @"This text contains @ and # signs"; 
NSRange stringRange = NSMakeRange(0, [testString length]); 
NSRegularExpression *regexTest = [[NSRegularExpression alloc] initWithPattern:@"\\b(@|#)\\b"]; 
NSRange nameRange = [regexTest rangeOfFirstMatchInString:testString options:0 range:stringRange]; 

當我的NSLog nameRange.location,它總是返回0。什麼是正確的形式,找到與NSRegularExpression跡象?

+1

對不起,這是複製/粘貼錯誤,我修好了。 –

+0

http://stackoverflow.com/questions/10353567/how-do-you-detect-words-that-start-with-or-within-an-nsstring? – Larme

回答

1

這就是我使用NSPredicate所做的。這會告訴您當前正在編輯/輸入的@mention單詞。希望這可以幫助。

- (void)textViewDidChange:(UITextView *)textView 
{ 
    _words = [self.textView.text componentsSeparatedByString:@" "]; 
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH[cd] '@'"]; 
    NSArray* names = [_words filteredArrayUsingPredicate:predicate]; 
    if (_oldArray) 
    { 
     NSMutableSet* set1 = [NSMutableSet setWithArray:names]; 
     NSMutableSet* set2 = [NSMutableSet setWithArray:_oldArray]; 
     [set1 minusSet:set2]; 
     if (set1.count > 0) 
      NSLog(@"Results %@", set1); 
    } 
    _oldArray = [[NSArray alloc] initWithArray:names]; 
}