如何使用正则表达式删除列表框中的项
本文关键字:列表 删除列 何使用 正则表达式 删除 | 更新日期: 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
填充列表框