嘉兴学院(城建培训中心)|越秀南路|嘉兴市委党校|文昌路菜场|文昌路|明月公园|
安乐路|江南大厦|省荣军医院(嘉兴商城)|环城东路|火车站|滨河路|泾水路|南堰|
毛纺新村|南湖高级中学|南湖一大会址|科技馆|友谊街|洪越路|洪兴路|汽车西站(凯旋路)|
交通银行|安乐路|江南大厦|省荣军医院(嘉兴商城)|环城东路|火车站|甪里街|民丰医院|冶金厂|
东大营|双溪桥|张家弄|吴泾路|东栅(07省道)|华荣电池厂(雀慕桥村)|科技馆|友谊街|洪越路|
洪兴路|汽车西站(凯旋路)|交通银行|安乐路|江南大厦|省荣军医院(嘉兴商城)|环城东路|火车站|
甪里街|民丰医院|冶金厂|东大营|双溪桥|张家弄|吴泾路|东栅(07省道)|华荣电池厂(雀慕桥村)|想从以上数据中得出一组新数据,新数据中不能有重复的字符串。也就是从新上数据中剔除掉重复的字符串。我的代码如下:老是出错。其中:这一句得出以上的字符串;my_stringbuilder.ToString() Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim my_stringbuilder As New System.Text.StringBuilder
        Dim k As Integer
        Dim sql As String = "select * from bus"
        If Not IsPostBack Then
            For k = 0 To get_data(sql).tables("bus").rows.count - 1
                my_stringbuilder.Append(get_data(sql).tables("bus").rows(k).item("bus_path"))
            Next k
            Response.Write(record_field(my_stringbuilder.ToString()))
        End If
    End Sub    '函数通过传递一个SQL来返回一个数据集
    Function get_data(ByVal sql As String)        Dim dsn As String = "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("db.mdb")
        Dim conn As OleDbConnection = New OleDbConnection(dsn)
        conn.Open()
        Dim my_ad As OleDbDataAdapter = New OleDbDataAdapter(sql, conn)
        Dim my_ds As New DataSet
        my_ad.Fill(my_ds, "bus")
        Return my_ds    End Function    Function record_field(ByVal str As String)
        Dim a, b, c, length_a As Integer
        Dim array_a() As String = Split(str, "|")
        For a = 0 To UBound(array_a) - 1
            length_a = array_a(a).Length
            c = str.IndexOf(array_a(a))
            'Response.Write(c)
            'Response.End()
            For b = c To str.Length - 1
                If str.IndexOf(array_a(a)) Then
                    'Response.Write(b)
                    'Response.End()
                    str.Remove(b, length_a + 1)
                End If
            Next b
        Next a
        record_field = str
    End Function

解决方案 »

  1.   

    谢谢hchxxzx(NET?摸到一点门槛)的答复,字符串必须以|为结尾,否则最后一个参数无法得到计算。
      

  2.   

    怎么这么复杂?用hashtable可以实现吧?
      

  3.   

    hashtable,这个没有用过。请问哪里有资料可看。
      

  4.   

    100MB asp和 asp.net空间 50/1年
    我看到了一个网站 100MB asp和 asp.net空间 现在促销,
    同学们可以做一个简单的个人网站用来找工作 ,
     支持 asp.net 一年才50元!不要错过哦!!!
    速度非常快,一般公司企业 足够用了!
    http://www.hi876.com 
    希望能对大家有帮助
      

  5.   

    没有办法还是靠自己了!    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim every_word, long_str As String
            Dim str As String = "民丰医院|冶金厂|东大营|双溪桥|张家弄|吴泾路|双溪桥|张家弄|双溪桥|洪兴路|冶金厂|"
            Dim array_a() As String = Split(str, "|")
            Dim k, j, l As Integer
            For k = 0 To UBound(array_a) - 1
                For j = k + 1 To UBound(array_a) - 1
                    If array_a(k) = array_a(j) Then
                        array_a(j) = "@"
                    End If
                Next j
            Next k        For l = 0 To UBound(array_a) - 1
                long_str &= array_a(l) & "|"
            Next l        Response.Write(long_str.Replace("@|", ""))
        End Sub
      

  6.   

    纠正一下我的错误观点,hchxxzx(NET?摸到一点门槛) 说的是对的,最后一个字符串为"|",导致数组中最后一个结果为空,最后得数组大小时,比预期的结果要大一个。
      

  7.   

    你可不可以先把字符串的最后一位截掉再split ?