Ana*_*and 2 .net c# arrays arraylist
我有一个名为gatherSplit的arraylist,它从名为splitMeToDelete的字符串中获取元素,其中包含以下内容:
splitMeToDelete = "Salary, Personal Savings, Pensions, Annuities, Social Security"
Run Code Online (Sandbox Code Playgroud)
字符串像这样拆分成ArrayList:
ArrayList gatherSplit = new ArrayList(splitMeToDelete.Split(new char[] { ',' }));
Run Code Online (Sandbox Code Playgroud)
当我给出以下代码行时,我应该将IndexOf作为3个instad我得到错误.
gatherSplit.RemoveAt(gatherSplit.IndexOf("Annuities"));
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
指数超出范围.必须是非负数且小于集合的大小.
我不明白为什么会这样.
您的调用IndexOf
返回-1,因为数组中的项包含"年金"(前导空格).尝试Trim
删除每个项目:
ArrayList gatherSplit = new ArrayList(
splitMeToDelete.Split(new char[] { ',' }).Select(item => item.Trim()).ToArray()
);
Run Code Online (Sandbox Code Playgroud)
(或者更容易,只是分开", ".ToCharArray()
.)
除了dbaseman指出的,你可以使用Remove
它.
gatherSplit.Remove(" Annuities"); //Note the space if you don't do the trim that dbaseman suggests.
Run Code Online (Sandbox Code Playgroud)
您还可以在导致问题的行上设置代码中的断点,并将鼠标悬停在"gatherSplit"上以查看它具有的值,按加号检查对象内部,您将看到额外的空格.
单击图像中红色圆圈的位置是如何设置断点.