У меня возникают проблемы с выделением жирным шрифтом каких-либо символов между указанной парой символов «**». Например, в этом NSString:
"The Fox has ran **around** the corner."
следует читать: «Лиса забежала за угол за угол»
вот мой код:
NSString *questionString = queryString;
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:questionString];
NSRange range = [questionString rangeOfString:@"\\*([^**]+)\\*" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch];
if (range.location != NSNotFound) {
[mutableAttributedString setAttributes:@{NSFontAttributeName:[UIFont fontWithName:AGHeavyFontName size:size]} range:range];
}
[[mutableAttributedString mutableString] replaceOccurrencesOfString:@"*" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, queryString.length)];
return mutableAttributedString;
У меня проблемы - этот код по-прежнему будет ловить символы с одной парой "*", поэтому в этом случае
"The fox has ran *around the corner*
будет по-прежнему читаться как «Лиса забежала за угол за угол», хотя этого не должно быть.
Любые идеи?
[^**]
не делает того, что вы думаете. Просто используйтеrangeOfString:
(илиcomponentsSeparatedByString:
вместе сcomponentsJoinedByString:
), чтобы получить подстроку между двумя экземплярами**
. - person   schedule 14.01.2014