私はこのようなハッシュタグを検出することができます。
+ (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かどうかを確認する必要があります。私に教えてください:)幸運