获取一行文本中 一个连续数字的起始位置和长度
2018-05-23 10:02 PingKang 阅读(486) 评论(0) 编辑 收藏 举报应用场景:一般应用于连续签到的提示,部分文本中需要特殊显示的数字样式
- (NSRange)rangeOfFirstMatchString:(NSString *)str{ NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators | NSRegularExpressionAnchorsMatchLines | NSRegularExpressionAllowCommentsAndWhitespace error:&error]; NSRange firstMatchRange = [regex rangeOfFirstMatchInString:str options:0 range:NSMakeRange(0, [str length])]; NSInteger matches = [regex numberOfMatchesInString:str options:0 range:NSMakeRange(0, [str length])]; if (matches>1) { firstMatchRange.length = firstMatchRange.length + matches - 1; } return firstMatchRange; }
接下来就可以利用返回的range值设置attributeString的富文本的属性,例如:
- (void)setAttributeStringForBlackLbl:(NSString *)str{ if ([NSString contentIsNullORNil:str] == NO) { NSMutableAttributedString * attributeString = [[NSMutableAttributedString alloc] initWithString:str]; [attributeString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16] range:NSMakeRange(0, str.length)]; [attributeString addAttribute:NSForegroundColorAttributeName value:[UIColor colorFromHexRGB:@"FF533D"] range:NSMakeRange(0, str.length)]; //设置强调文字 NSRange specialRange = [self rangeOfFirstMatchString:str]; [attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:18.0] range:specialRange]; [attributeString addAttribute:NSForegroundColorAttributeName value:[UIColor colorFromHexRGB:@"E24C39"] range:specialRange]; self.blackLbl.attributedText = attributeString; } }