程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 文章中的關鍵詞替換實現方案,關鍵詞方案

文章中的關鍵詞替換實現方案,關鍵詞方案

編輯:C#入門知識

文章中的關鍵詞替換實現方案,關鍵詞方案


在新浪、騰訊等門戶網站上浏覽新聞的時候,尤其是體育類新聞。

經常看到一些體育明星、球隊名稱等信息加上了相應的鏈接,指向該明星的介紹頁面。

如下:

 

如今進行的項目中也要開發一個類似功能,給相應的關鍵詞加上對應的鏈接,簡單的思考了下,有以下幾個步驟:

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;
        }

  

簡單的測試結果如下:


word多個關鍵字自動替換

有時候我們要多次輸入同一個文本,特別是要多次輸入一些特殊符號(如※),非常麻煩,對錄入速度有較大的影響。這時我們可以用一次性替換的方法來克服這一缺陷。先在需要輸入這些符號的單元格中輸入一個代替的字母(如X,注意:不能是表格中需要的字母),等文檔制作完成後,單擊“編輯→替換”命令,打開“替換”對話框,在“查找內容”下面的方框中輸入代替的字母“X”,在“替換為”下面的方框中輸入“※”,然後按“替換”按鈕一個一個替換,也可以按“全部替換”按鈕,一次性全部替換完畢。
 

Word中怎一次性選擇同一文章不同位置的相同內容?

1、用查找和替換來實現:
Ctrl+H,打開替換對話框,查找欄輸入你的關鍵詞,將光標定位在替換欄,什麼也不要填(一定要保持光標不動),點高級(2007為更多),點左下的格式-字體,將字體的顏色定義為紅色,最後點全部替換,即可將你要的關鍵詞定義為紅色。

2、按你的方法,你可以選定一個關鍵詞,再按住Ctrl,再用鼠標選定其他的詞,這樣可以不連續選定!另外按住Alt,再用鼠標可能按列選定文本.
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved