在新浪、騰訊等門戶網站上浏覽新聞的時候,尤其是體育類新聞。
經常看到一些體育明星、球隊名稱等信息加上了相應的鏈接,指向該明星的介紹頁面。
如下:

如今進行的項目中也要開發一個類似功能,給相應的關鍵詞加上對應的鏈接,簡單的思考了下,有以下幾個步驟:
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,再用鼠標可能按列選定文本.