簡體   English   中英

檢查字符串是否包含列表中的元素並將其存儲

[英]Check if string contains an element from list and store it

我的目標是檢查字符串是否包含列表中的任何字符串值,存儲該值並將其包裝在HTML標簽中。 我有點迷路了。

我的列表:

public List<string> AccessModifiers
{
    get { return _accessModifiers ?? (_accessModifiers = new List<string>()); }
}

將值添加到單獨的方法中:

AccessModifiers.Add("public");
AccessModifiers.Add("private");
AccessModifiers.Add("protected");
AccessModifiers.Add("internal");
AccessModifiers.Add("protected internal");
AccessModifiers.Add("void");

假設我在下面的代碼中將文本protected void TagListView_ItemDataBound(object sender, ListViewItemEventArgs e)到下面的代碼,我想要得到的是將關鍵字protectedvoid作為matchedItems封裝在HTML標簽中。 感覺是Find方法應該檢查是否找到了項目,而不是整個列表,但是我在這里有點迷失了。 這是到目前為止我得到的:

        foreach (var item in AccessModifiers)
        {
            if (UsedItems == null) // If the session is null...
            {
                UsedItems = new List<string>(); // ...a new one is initiated
            }

            if(!UsedItems.Contains(item)) // Check if the iterated item is found in the session-list
            {
                bool match = AccessModifiers.Any(ArticleTextBox.Text.Contains);
                string matchedItem = AccessModifiers.Find(ArticleTextBox.Text.Contains);

                if (match == true)
                {
                    string openTag = "<span class='accessModifiers'>";
                    string closeTag = "</span>";
                    string newModifier = openTag + matchedItem + closeTag;
                    newText = newText.Replace(matchedItem, newModifier);
                    UsedItems.Add(matchedItem);  // Add the matchedItem (used item) to the session-list not to be iterated again
                }
            }
        }
        return newText;

在這一點上,我只能protected關鍵字以進行存儲,而不是void 看來這要比我到目前為止提出的要簡單得多。

看來這要比我到目前為止提出的要簡單得多。

相反。 特別是,盡管您給出的示例很簡單,但一般情況卻並非如此:

public static void thisvoidmethodisstatic()
{
    Console.WriteLine("private within text");
}

基本上,您將需要能夠更好地理解代碼結構的代碼。 簡單的搜索和替換不會減少它。

我在csharpindepth.com使用代碼突出顯示器基於Jared Parsons編寫的VB突出顯示器 我將查看是否可以找到原始源代碼-但是,如果不能找到,則可以確定還有其他開放源代碼突出顯示器可用。

編輯:如果您真的滿意只進行一次簡單的搜索和替換,那么您肯定會使它變得比所需的更為復雜。

  • 你遍歷所有的訪問修飾符, 在循環中尋找所有的人
  • 我強烈建議您擺脫條件列表分配-始終始終事先分配一個空列表。 除了其他方面,它避免了您必須在其他地方檢查無效性。

然后,您將得到:

foreach (var modifier in AccessModifiers)
{
    if (ArticleTextBox.Text.Contains(modifier))
    {
        UsedItems.Add(modifier);
        string openTag = "<span class='accessModifiers'>";
        string closeTag = "</span>";
        string newModifier = openTag + matchedItem + closeTag;
        newText = newText.Replace(matchedItem, newModifier);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM