以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]定义了一个数组,想要删除数组指定位置的内容?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68268)

--  作者:laly
--  发布时间:2015/5/13 19:42:00
--  [求助]定义了一个数组,想要删除数组指定位置的内容?

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

Dim Names() As String

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

names = names.xxxx??

 

 


--  作者:大红袍
--  发布时间:2015/5/13 20:25:00
--  

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

 

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

 

 建议直接用集合去做


--  作者:大红袍
--  发布时间:2015/5/13 20:26:00
--  

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

 

 如 names(1) = nothing


--  作者:laly
--  发布时间:2015/5/13 20:52:00
--  
以下是引用大红袍在2015/5/13 20:25:00的发言:

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

 

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

 

 建议直接用集合去做


--  作者:laly
--  发布时间:2015/5/13 20:53:00
--  

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


--  作者:大红袍
--  发布时间: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)


--  作者:游
--  发布时间: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

--  作者:大红袍
--  发布时间:2015/5/14 9:23:00
--  

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

 

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