在新浪、騰訊等門戶網站上浏覽新聞的時候,尤其是體育類新聞。
經常看到一些體育明星、球隊名稱等信息加上了相應的鏈接,指向該明星的介紹頁面。
如下:
如今進行的項目中也要開發一個類似功能,給相應的關鍵詞加上對應的鏈接,簡單的思考了下,有以下幾個步驟:
1、詞庫行程(體育明星、球隊等);
2、保存內容時候加自定義標簽;
3、頁面展示時替換標簽為鏈接。
列出代碼如下,內容稍後完善。
關鍵詞的定義:
/// <summary> /// 關鍵詞信息 /// </summary> public class KeywordItem { /// <summary> /// 關鍵詞類型(對應明星、球隊等) /// </summary> public byte WordType { set; get; } /// <summary> /// 關鍵詞內容(如:科比、湖人等) /// </summary> public string Word { set; get; } /// <summary> /// 鏈接信息ID(如:科比在球員數據庫的ID,湖人在球隊數據庫的ID等) /// </summary> public int ItemId { set; get; } }
給文章內容加上自定義標簽的方法:
/// <summary> /// 保存內容時,對內容進行關鍵詞標記處理 /// </summary> /// <param name="content"></param> /// <returns></returns> public static string BuildContent(string content) { //關鍵詞庫 var list = xxxx;//從緩存中取得(匯集了球員、球隊等不同來源) string endTag = "</ka>"; foreach (KeywordItem item in list) { int index = content.IndexOf(item.Word, StringComparison.Ordinal); if (index > -1) { //判斷當前詞根是否已加標記 int tagIndex = index + item.Word.Length; //詞根結束索引 int endTagLength = endTag.Length; //結束標記長度 if (tagIndex + endTagLength > content.Length) { content = content.Replace(item.Word, string.Format("<ka data='{0}_{1}'>{2}</ka>", item.WordType, item.ItemId, item.Word)); } else { if (content.Substring(tagIndex, endTagLength) != endTag) { string addStr = string.Format("<ka data='{0}_{1}'>", item.WordType, item.ItemId); content = content.Insert(index, addStr); content = content.Insert(index + addStr.Length + item.Word.Length, endTag); } } } } return content; }
展示時替換自定義標簽為超鏈接:
/// <summary> /// 展示內容時,替換關鍵詞標記為超鏈接 /// </summary> /// <param name="content"></param> /// <returns></returns> public static string ShowContent(string content) { var regexKka = new Regex(@"<ka data='(?<type>\d+)_(?<itemid>\d+)'>(?<word>\S+)</ka>", RegexOptions.IgnoreCase); MatchCollection mc = regexKka.Matches(content); if (mc != null && mc.Count > 0) { foreach (Match item in mc) { byte type = Convert.ToByte(item.Groups["type"].Value); long itemid = Convert.ToInt64(item.Groups["itemid"].Value); string word = item.Groups["word"].Value; string baseText = string.Format("<ka data='{0}_{1}'>{2}</ka>", type, itemid, word); string toText = null; switch (type) { case 1: toText = string.Format("<a href='http://xxx.com/player/{0}.html'>{1}</a>", itemid, word); break; } content = content.Replace(baseText, toText); } } return content; }
簡單的測試結果如下:
有時候我們要多次輸入同一個文本,特別是要多次輸入一些特殊符號(如※),非常麻煩,對錄入速度有較大的影響。這時我們可以用一次性替換的方法來克服這一缺陷。先在需要輸入這些符號的單元格中輸入一個代替的字母(如X,注意:不能是表格中需要的字母),等文檔制作完成後,單擊“編輯→替換”命令,打開“替換”對話框,在“查找內容”下面的方框中輸入代替的字母“X”,在“替換為”下面的方框中輸入“※”,然後按“替換”按鈕一個一個替換,也可以按“全部替換”按鈕,一次性全部替換完畢。
1、用查找和替換來實現:
Ctrl+H,打開替換對話框,查找欄輸入你的關鍵詞,將光標定位在替換欄,什麼也不要填(一定要保持光標不動),點高級(2007為更多),點左下的格式-字體,將字體的顏色定義為紅色,最後點全部替換,即可將你要的關鍵詞定義為紅色。
2、按你的方法,你可以選定一個關鍵詞,再按住Ctrl,再用鼠標選定其他的詞,這樣可以不連續選定!另外按住Alt,再用鼠標可能按列選定文本.