读书人

稿子自动添加超链接

发布时间: 2014-01-17 00:06:00 作者: rapoo

文章自动添加超链接
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;}}

?

读书人网 >编程

热点推荐