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

本文关键字:列表 删除列 何使用 正则表达式 删除 | 更新日期: 2023-09-27 18:34:32

我正在尝试"以智能方式"删除列表框中的项目。我找到了解决问题的替代方案,但我不喜欢它。

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

我的替代方法是删除列表框中的所有

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

所以我的问题是我需要找到我要删除的项目的索引,并将其删除,但是 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 社区的新手,我会听取您对我的问题以及如何提出更好的问题、解释等的所有建议。

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

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

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

尝试使用 listMatrix.Values 填充列表框