如果能实现发表文章时自动添加超链接,编辑工作将会有很大的提升。这是在网上收集来的一个自动添加超链接的贴子。词库采用hashtable数据结构(最终实现是HashMap)。
下面是代码的实现:十万的词库,一万字的文章,自动标注在本机上测试只需要100ms,个人觉得效率还不错。
Java代码
public class test {
public static void main(String[] args) {
Map<String,String> dict = createDict();
StringBuilder content = new StringBuilder("我想要一辆宝马的宝马X3或者是奥迪的奥迪A4L,如果是比亚迪F0或者吉利的车送给我也不要。");
for(int i = 0;i < 500;i++){
content.append("我想要一辆宝马的宝马X3或者是奥迪的奥迪A4L,如果是比亚迪F0或者吉利的车送给我也不要。");
}
long startTime = System.currentTimeMillis();
String result = autoReplace(dict, content.toString());
long endTime = System.currentTimeMillis();
System.out.println("方法被执行,花费时间" + (endTime - startTime) + "ms");
System.out.println(result);
}
/**
*
* @Description: 将文章中的关键词用其他一些词来替换,比如加上a标签超链接等
* @param map 替换词库
* @param content 文章内容
* @return 参数说明 替换后的文章内容
*/
private static String autoReplace(Map<String, String> map, String content) {
//得到词库的Key最大长度,以便确定切割的最大长度
Set<String> keys = map.keySet();
int keylength = 0;
for (String k : keys) {
keylength = keylength < k.length() ? k.length() : keylength;
}
StringBuilder result = new StringBuilder("");
for (int i = 0; i < content.length() - keylength; i++) {
StringBuilder key = new StringBuilder("");
StringBuilder temp = new StringBuilder("");
boolean flag = false;
for (int j = keylength; j >= 1; j--) {
key = new StringBuilder(content.substring(i, i + j));
if (map.get(key.toString()) != null) {
temp.append(map.get(key.toString()));
i = i + j - 1;
flag = true;
break;
}
}
if (!flag) {
temp.append(content.charAt(i));
}
result.append(temp);
}
return result.append(content.substring(content.length() - keylength))
.toString();
}
/**
*
* @Description: 创建一个词库
*/
private static Map<String,String> createDict(){
Map<String, String> map = new HashMap<>();
map.put("宝马", "<a>宝马</a>");
map.put("宝马X3", "<a>宝马X3</a>");
map.put("奥迪", "<a>奥迪</a>");
map.put("奥迪A4L", "<a>奥迪A4L</a>");
map.put("比亚迪F0", "<a>比亚迪F0</a>");
map.put("吉利", "<a>吉利</a>");
for (Integer i = 0; i < 100000; i++) {
map.put(i.toString(), "<a>吉利</a>");
}
return map;
}
}
要饭二维码
洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!
文章的版权
本文属于“洪哥笔记”原创文章,转载请注明来源地址:自动添加超链接:http://www.splaybow.com/post/java-addhyperlink.html
如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D!
发布时间:2014/1/17 9:43:23 | 编辑:fly dream | 分类:Java | 浏览: