Моя проблема - найти позицию определенного слова (например: span ) в строке NSSt, содержащей текст HTML, и заменить это слово.
Например, если мое целевое слово span , мой текст замены должен выглядеть следующим образом:
<SPAN style="BACKGROUND-COLOR: #FF0000">span</SPAN>
Если мой начальный текст:
<span class='i_04_12_000000'>this is a span</span>
Мой желаемый результат будет:
<span class='i_04_12_000000'>this is a <SPAN style="BACKGROUND-COLOR: #FF0000">span</SPAN></span>
Очевидно, что если я просто найду span , я не найду только вхождение в теге html.
Идеи о том, как найти правильную строку, даже с NSRange?
UPDATE:
Это окончательное решение:;)
+(NSString *)emphasizeString:(NSString *)stringToEmphasize inText:(NSString *)fullText
{
NSString * regExp = [NSString stringWithFormat:@"(?i)([\\s\\.,>'-])(%@)([\\s\\.,;!\\?\\)<])",stringToEmphasize];;
NSArray * regexResult = [fullText arrayOfCaptureComponentsMatchedByRegex:regExp];
NSString * result = [NSString stringWithString:fullText];
if([regexResult count] >0)
{
for (NSArray * match in regexResult)
{
NSString * all = [match objectAtIndex:0];
NSString * before = [match objectAtIndex:1];
NSString * matched = [match objectAtIndex:2];
NSString * after = [match objectAtIndex:3];
result = [result stringByReplacingOccurrencesOfString:all
withString:[NSString stringWithFormat:@"%@<SPAN style=\"BACKGROUND-COLOR: #FF0000\">%@</SPAN>%@",before, matched, after]
options:NSCaseInsensitiveSearch
range: [result rangeOfString:all]];
}
}
NSLog(@"%@",result);
return result;
}