표시된 "**"쌍 사이의 문자를 굵게 만드는 데 문제가 있습니다. 예를 들어,이있는 NSString에서 :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 :'(또는'componentsSoaratedByString :'와'componentsJoinedByString :')을 사용하여'**'의 두 인스턴스 사이에 부분 문자열을 얻으십시오. –
@ H2CO3은 당신이 말한 것을보기를 좋아할 것입니다 – 3254523
@ User3294729579346597634 당신은 구글과 H2CO3가 방금 말한 것을 확인할 수 있습니다. 그는 정확한 방법 이름을 알려 줬어. 그게 어렵지 않다 –