iOS 如何将不同的属性添加到同一子字符串的多次出现
iOS how to add different attributes to multiple occurrences of same substring
我想为同一子字符串的两次出现分别创建一个具有不同属性的 NSAttributedString。
NSString *text = @"ABC & ABC";
NSString *substring = @"ABC"
NSMutableAttributedString *attStr= [[NSMutableAttributedString alloc] initWithString:text];
NSRange range = [[attStr string] rangeOfString:substring];
我想使用方法
为每次出现的子字符串设置不同的属性
[attStr addAttributes:attributes range:range]
。但是,无论我 运行 它多少次,只有第一次出现的 substring 会改变属性。
有没有办法让 addAtributes:
知道去寻找尚未设置属性的子字符串?
您可以通过对 NSRegularExpression 进行迭代来获得包含多个匹配项的数组:
NSString *string = @"ABC & ABC";
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"ABC" options:NSRegularExpressionCaseInsensitive error:&error];
NSRange range = NSMakeRange(0, string.length);
if (!error) {
[regex enumerateMatchesInString:string options:NSMatchingReportCompletion range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSLog(@"%@",result);
}];
}
然后从result.range属性获取范围。
您可以计算单词重复的时间。
NSUInteger count = 0, length = [@"ABC & ABC" length];
NSRange range = NSMakeRange(0, length);
while (range.location != NSNotFound) {
range = [self.dateTime rangeOfString:@"ABC" options:0 range:range];
if (range.location != NSNotFound) {
range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
count++;
}
}
我想为同一子字符串的两次出现分别创建一个具有不同属性的 NSAttributedString。
NSString *text = @"ABC & ABC";
NSString *substring = @"ABC"
NSMutableAttributedString *attStr= [[NSMutableAttributedString alloc] initWithString:text];
NSRange range = [[attStr string] rangeOfString:substring];
我想使用方法
为每次出现的子字符串设置不同的属性
[attStr addAttributes:attributes range:range]
。但是,无论我 运行 它多少次,只有第一次出现的 substring 会改变属性。
有没有办法让 addAtributes:
知道去寻找尚未设置属性的子字符串?
您可以通过对 NSRegularExpression 进行迭代来获得包含多个匹配项的数组:
NSString *string = @"ABC & ABC";
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"ABC" options:NSRegularExpressionCaseInsensitive error:&error];
NSRange range = NSMakeRange(0, string.length);
if (!error) {
[regex enumerateMatchesInString:string options:NSMatchingReportCompletion range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSLog(@"%@",result);
}];
}
然后从result.range属性获取范围。
您可以计算单词重复的时间。
NSUInteger count = 0, length = [@"ABC & ABC" length];
NSRange range = NSMakeRange(0, length);
while (range.location != NSNotFound) {
range = [self.dateTime rangeOfString:@"ABC" options:0 range:range];
if (range.location != NSNotFound) {
range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
count++;
}
}