如何使用正则表达式删除列表框中的项目

时间:2014-12-18 12:27:32

标签: c# regex wpf matrix listbox

我正在尝试以智能方式删除列表框中的项目""。我发现了一个替代我的问题,但我不喜欢它。

我的程序是矩阵计算器。我的所有矩阵都在字典中,我打印"它们位于图形界面的列表框中。

我的选择是删除列表框中的所有项目,删除字典中的选定矩阵,然后重新添加列表框中的所有矩阵。

所以我的问题是我需要找到我要删除的项目的索引并删除它,但var index总是等于-1。我寻找解决方案,我发现我需要覆盖方法Equals()GetHashCode()ToString()。我想知道是否有更好的解决方案。

 public static String Delete ()
     {
         String matrix = matches[0].Groups[2].ToString();
         if (Calculatrice.listMatrix.ContainsKey(matrix))
         {
             Matrix m = Calculatrice.listMatrix[matrix];

             int index = Calculatrice.mainWindow.ListBox_display.Items.IndexOf(m);

             Calculatrice.mainWindow.ListBox_display.Items.RemoveAt(index);

             Calculatrice.listMatrix.Remove(matrix);

             return "Done!\n";
         }
         throw new Exception("The matrix does not exist.\n");
     }

如果您想了解我的正则表达式,可以这样:private static Regex delete_rgx = new Regex(@"^(delete)\((\w+)\)$");

我是StackOverflow社区的新手,我会听取您对我的问题的所有建议,以及如何提出更好的问题,解释等。

1 个答案:

答案 0 :(得分:0)

ListBox_display中的对象可能不是listMatrix词典中的确切对象。

IndexOf 函数将返回特定对象的索引(就像您想要的那样),但在您的情况下,如果字典中的对象与列表框中的对象不同,则会得到-1。

尝试使用listMatrix.Values

填充列表框