/ /ハッシュタグを含むハッシュタグを検出する - ios、objective-c

ハッシュタグを含むハッシュタグを検出する - 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];

回答№2の場合は1

私はこのlibを使っていた: https://cocoapods.org/pods/twitter-text

メソッドを持つTwitterTextクラスがあります (NSArray *)hashtagsInText:(NSString *)text checkingURLOverlap (BOOL)checkingURLOverlap それは助けることができる。

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