【问题标题】:Remove an array from another array从另一个数组中删除一个数组
【发布时间】:2021-07-27 16:45:57
【问题描述】:

我正在尝试从一个字符串创建一个数组并用逗号分割,然后希望从中删除一个数组,我已经阅读了几篇文章但无法让其中任何一篇工作,因此非常感谢任何帮助。

Dim stringArr As Array = tbOldValues.Text.Split(","c)
Dim FilterData As Array = tkbExistingNames.Text.Split(","c)

上面分配了数组,我将如何实现从FilterData中删除stringArr

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    数组的大小是固定的,所以没有有效的Remove 方法。您必须创建一个新数组。您可以使用 LINQ,它通过Enumerable.Except 简化了任务:

    FilterData = FilterData.Except(stringArr).ToArray()
    

    Except 只返回那些在第一个集合中而不在第二个集合中的项目。

    您的数组类型也有问题。不要使用Array,而是使用String()。所以

    Dim stringArr As String() = tbOldValues.Text.Split(","c)
    Dim FilterData As String() = tkbExistingNames.Text.Split(","c)
    

    System.Array 是所有数组的旧的非泛型基类型。你几乎不需要它,至少当你知道类型时(比如这里String())。

    【讨论】:

    • 非常感谢蒂姆的回复,当我添加此代码时,我收到一个错误:'Except' is not a member of 'System.Array'。
    • @user1824963:您需要添加Imports System.Linq
    • 嗨蒂姆,是的,我确实在添加例外代码之前添加了它,但错误仍然存​​在 - 有多奇怪?
    • 我正在使用 .Net 4.5.2
    • @user1824963:不,这看起来不对。您想要拆分 TextBox.Text,因此您需要使用 String.Split。这将返回一个String()。啊,对不起,现在我看到了问题。您需要将其声明为String() 而不是Array。所以这是错误的:Dim stringArr As Array = tbOldValues.Text.Split(","c) 而不是使用Dim stringArr As String() = tbOldValues.Text.Split(","c) 或只使用Dim stringArr = tbOldValues.Text.Split(","c)
    【解决方案2】:

    我尽量避免使用数组,更喜欢 List... 您的问题陈述不清楚,尝试添加示例

    有了这些值

        tbOldValues.Text = "two,four,six"
        tkbExistingNames.Text = "one,two,three,four,five,six,seven"
    

    我运行了这段代码

        Dim stringArr As List(Of String) = tbOldValues.Text.Split(","c).ToList
    
        Dim FilterData As List(Of String) = tkbExistingNames.Text.Split(","c).ToList
    
        FilterData = FilterData.Except(stringArr).ToList
    

    FilterData 在代码末尾有四个元素,

    one
    three
    five
    seven
    

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多