以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  出个题目 反正我这一下子是没解决.【解决了】  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7892)

--  作者:mr725
--  发布时间:2010/8/17 13:20:00
--  出个题目 反正我这一下子是没解决.【解决了】

Dim s As String = "2,6,3,8,4,9,1,7,5"

Dim s1 As String

这段代码怎么写???  (不能放到表里去排序哦)

output.show(s1)   \'结果 = " 1,2,3,4,5,6,7,8,9"

[此贴子已经被作者于2010-8-18 12:21:38编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/8/17 14:56:00
--  
Dim s1() As String = "2,6,3,8,4,9,1,7,5".Split(",")
Array.Sort(s1)
Output.show(String.Join(",",s1))

--  作者:mr725
--  发布时间:2010/8/17 15:04:00
--  
以下是引用狐狸爸爸在2010-8-17 14:56:00的发言:
Dim s1() As String = "2,6,3,8,4,9,1,7,5".Split(",")
Array.Sort (s1)
Output.show(String.Join(",",s1))

图片点击可在新窗口打开查看       这个要收藏啊~

[此贴子已经被作者于2010-8-17 15:06:47编辑过]

--  作者:mr725
--  发布时间:2010/8/17 18:52:00
--  

老大真的厉害呀!!!!!!    你这几行代码, 我得要用近40行代码才能搞定,  还不知道有没有缺陷...... 

 

建议大家都收藏下来啊~~~~~~~~


--  作者:czy
--  发布时间:2010/8/17 20:28:00
--  
以下是引用mr725在2010-8-17 18:52:00的发言:

老大真的厉害呀!!!!!!    你这几行代码, 我得要用近40行代码才能搞定,  还不知道有没有缺陷...... 

 

建议大家都收藏下来啊~~~~~~~~

 

有10以上数据就不灵验了,如果能按数值大小来排序就好了。


--  作者:狐狸爸爸
--  发布时间:2010/8/17 21:51:00
--  
以下是引用mr725在2010-8-17 18:52:00的发言:

老大真的厉害呀!!!!!!    你这几行代码, 我得要用近40行代码才能搞定,  还不知道有没有缺陷...... 

 建议大家都收藏下来啊~~~~~~~~

 

呵呵,不是我厉害,是vb.net本来就有数组排序功能


--  作者:lxl
--  发布时间:2010/8/17 23:40:00
--  
以下是引用czy在2010-8-17 20:28:00的发言:

 

有10以上数据就不灵验了,如果能按数值大小来排序就好了。

C#支持匿名方法,所以写起来代码比较省事

 

VB 必须显示定义一个比较方法。

而在foxtable里面 自定义的方法只能放在全局变量,所以只能这样

全局变量加上如下代码:

    Public Function StrCompare(ByVal x As String, ByVal y As String) As Integer
        Dim a As Integer = x
        Dim b As Integer = y
        Return a.CompareTo(b)
    End Function

然后命令窗口执行:

        Dim s1() As String = "2,6,3,11,8,4,9,1,7,5,10".Split(",")
        Array.Sort(s1, AddressOf StrCompare)
        Output.show(String.Join(",", s1))

[此贴子已经被作者于2010-8-17 23:41:24编辑过]

--  作者:e-png
--  发布时间:2010/8/17 23:52:00
--  

这是个怪题,挺难

lxl 版主:

Dim s1() As String = "10.1,11.1,10.3,2,6,3,11,8,4,9,1,7,5,10".Split(",")
Array.Sort(s1, AddressOf StrCompare)
Output.show(String.Join(",", s1))

结果为:1,2,3,4,5,6,7,8,9,10.3,10.1,10,11.1,11

小数到整数前面去了。


--  作者:lxl
--  发布时间:2010/8/17 23:56:00
--  
以下是引用e-png在2010-8-17 23:52:00的发言:

这是个怪题,挺难

lxl 版主:

Dim s1() As String = "10.1,11.1,10.3,2,6,3,11,8,4,9,1,7,5,10".Split(",")
Array.Sort(s1, AddressOf StrCompare)
Output.show(String.Join(",", s1))

结果为:1,2,3,4,5,6,7,8,9,10.3,10.1,10,11.1,11

小数到整数前面去了。

呵呵

只考虑整数了

        Dim a As Integer = x
        Dim b As Integer = y

换成

        Dim a As Single =  x
        Dim b As Single = y

就可以了

 

原来的比较方式 把11.1  11.3都强行转换成整数11去比较了


--  作者:e-png
--  发布时间:2010/8/18 0:15:00
--  
ok         图片点击可在新窗口打开查看