/ / Откриване на хештегове, включително & в hashtag - ios, aim-c

Открийте hashtags, включително и в hashtag - ios, objective-c

Мога да открия хештегове като този.

+ (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. Как да направя?

Отговори:

1 за отговор № 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];

1 за отговор № 2

Използвах тази lib: https://cocoapods.org/pods/twitter-text

Има TwitterText клас с метод (NSArray *)hashtagsInText:(NSString *)text checkingURLOverlap (BOOL)checkingURLOverlap Може да помогне.

Използвах този шушулка преди миналия път, тогава той се получи чудесно. За днес трябва да проверите дали все още е наред. Кажете ми :) Успех