/ / Ermitteln von Hashtags, einschließlich & in Hashtags - ios, Objective-c

Detect Hashtags einschließlich & in Hashtag - IOS, Ziel-c

Ich kann solche Hashtags erkennen.

+ (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;
}

Problem ist, dass, wenn inputStr "# D & D" ist, es nur #D erkennen kann. Wie soll ich machen

Antworten:

1 für die Antwort № 1

Fügen Sie dazu mit Ihrem reg-Ausdruck ein Sonderzeichen hinzu, das Sie zulassen möchten.

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

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

Genauso wie Sie ein anderes Sonderzeichen hinzufügen, das Sie möchten.

Also ändern Sie einfach Ihren regulären Ausdruck wie folgt.

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

1 für die Antwort № 2

Ich habe diese Bibliothek benutzt: https://cocoapods.org/pods/twitter-text

Es gibt eine TwitterText-Klasse mit Methode (NSArray *)hashtagsInText:(NSString *)text checkingURLOverlap (BOOL)checkingURLOverlap Es könnte helfen.

Ich habe diesen Pod vor einem Jahr das letzte Mal benutzt, dann hat es großartig funktioniert. Für heute müssen Sie überprüfen, ob es noch in Ordnung ist. Lass es mich wissen :) Viel Glück