【发布时间】:2011-08-28 17:39:43
【问题描述】:
我正在开发一个应用程序,它接收一篇文章(简单的 HTML 页面)和一个词汇术语列表(每个都可以是一个单词、一个短语,甚至是一个句子),并为它的每个术语创建一个链接发现。问题是对于具有更多术语的较大文本需要很长时间。目前我们正在处理这个问题,首先显示未标记的文本,在后台处理链接,最后在处理完成时重新加载 Web 视图。不过,这可能需要一段时间,我们的一些用户对此并不满意。
现在,该应用程序在条款上使用了一个简单的循环,在 HTML 中进行替换。基本上:
for (int i=0; i<terms.count; i++){
NSString *term = [terms objectAtIndex:i];
NSString *replaceString = [NSString stringWithFormat:@"<a href="myUrl:\\%d>%@</a>", i, term];
htmlString = [htmlString stringByReplacingOccurrencesOfString:term
withString:replaceString
options:NSCaseInsensitiveSearch
range:NSMakeRange(0, [htmlString length] )];
}
但是,我们正在处理多种语言,因此每个学期不只有一个替换,而是二十个!那是因为我们必须在每个学期的开头(西班牙语中的倒置问号)和结尾处理标点符号。我们必须用适当的超链接替换"term"、"term." 和"term?"。
我可以使用更有效的方法来标记此 HTML 吗?
我需要保留原始术语的索引,以便以后用户点击链接时可以检索到。
【问题讨论】:
-
我在写这篇文章的时候并没有意识到链接需要包含该术语的原始索引。我不能将术语本身用作链接 url。
-
之所以不能用这个词是因为我需要处理外文和字符,而UIWebView似乎不能正确处理带有unicode的链接。
标签: objective-c ios nsstring full-text-search replace