Foxtable(狐表)用户栏目专家坐堂 → [求助]定义了一个数组,想要删除数组指定位置的内容?


  共有2845人关注过本帖树形打印复制链接

主题:[求助]定义了一个数组,想要删除数组指定位置的内容?

帅哥哟,离线,有人找我吗?
laly
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:272 威望:0 精华:0 注册:2015/3/25 22:03:00
[求助]定义了一个数组,想要删除数组指定位置的内容?  发帖心情 Post By:2015/5/13 19:42:00 [只看该作者]

定义了一个数组,现在想要删除数组指定位置的内容,比如数组中第二个位置的内容,把美国去掉,用哪个函数呢,removeat 只能用与集合。

Dim Names() As String

Names = New String() {"中国","美国","日本","俄罗斯"}

names = names.xxxx??

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/13 20:25:00 [只看该作者]

 数组,是不能直接删除某个元素的。

 

 数组如果要删除元素,就要操作后面的所有元素向前移动,比较麻烦。

 

 建议直接用集合去做


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/13 20:26:00 [只看该作者]

 或者是,你数组的元素设置成空值。

 

 如 names(1) = nothing


 回到顶部
帅哥哟,离线,有人找我吗?
laly
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:272 威望:0 精华:0 注册:2015/3/25 22:03:00
  发帖心情 Post By:2015/5/13 20:52:00 [只看该作者]

以下是引用大红袍在2015/5/13 20:25:00的发言:

 数组,是不能直接删除某个元素的。

 

 数组如果要删除元素,就要操作后面的所有元素向前移动,比较麻烦。

 

 建议直接用集合去做


 回到顶部
帅哥哟,离线,有人找我吗?
laly
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:272 威望:0 精华:0 注册:2015/3/25 22:03:00
  发帖心情 Post By:2015/5/13 20:53:00 [只看该作者]

请问:字符串可以转化为字符串集合吗?


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/13 20:56:00 [只看该作者]

 可以,但需要用代码赋值

 

Dim str As String = "123,456,789"
Dim ls As new List(Of String)
For Each s As String In str.Split(",")
    ls.Add(s)
Next

msgbox(ls.count)


 回到顶部
帅哥哟,离线,有人找我吗?
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:1916 威望:0 精华:0 注册:2014/8/24 13:36:00
  发帖心情 Post By:2015/5/13 22:36:00 [只看该作者]

写个函数吧

函数:xxx
Dim f() As String = Args(0)
Dim i As Integer = Args(1)

Dim j As Integer = f.Length
Dim a(j-1) As String  

System.Array.Copy(f,0,a,0,i)
System.Array.Copy(f,i+1,a,i,j-i-1)

Return a


测试:
Dim Names() As String
Names = New String() {"中国","美国","日本","俄罗斯","美国","日本","俄罗斯"}

Names = Functions.Execute("xxx",Names,0)
For i As Integer = 0 To Names.Length - 1
    Output.show(Names(i))
Next

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/14 9:23:00 [只看该作者]

回复7楼,用copy是得不偿失的,数组本来就是一段连续存储空间,你每一次删除元素,都要开辟一段新的空间,不好;

 

如果是在原有空间里移动位置的话,也耗时耗力;还不如直接设置为nothing或者用集合


 回到顶部