我需要对VB.Net等价的数组进行排序ksorton PHP。我尝试比较它们,但结果不同。这是我的PHP 代码:<?php$parameter['data[1000].isi']= '0';$parameter['data[111].isi']= '0';$parameter['data[112].isi']= '0';$parameter['data[100].isi']= '0';$parameter['data[3].isi']= '0';$parameter['data[2].isi']= '0';$parameter['data[1].isi']= '0';$parameter['data[0].isi']= '0';ksort($parameter);foreach($parameter as $key => $val){ echo $key." = ".$val."<br />";}?>该输出云:data[0].itemNo = 0data[1000].isi = 0data[100].isi = 0data[111].isi = 0data[112].isi = 0data[1].isi = 0data[2].isi = 0data[3].isi = 0这是我的VB.NET 代码: Dim isi As New Dictionary(Of String, String) isi.Add("data[1000].isi", 0) isi.Add("data[111].isi", 0) isi.Add("data[112].isi", 0) isi.Add("data[100].isi", 0) isi.Add("data[3].isi", 0) isi.Add("data[2].isi", 0) isi.Add("data[1].isi", 0) isi.Add("data[0].isi", 0) Dim coba As New ArrayList() Dim str, strisi As String For Each kvp As KeyValuePair(Of String, String) In isi coba.Add(kvp.Key & "=" & kvp.Value) Next coba.Sort() For Each apa As String In coba str = str & "&" & apa Next TextBox1.Text = str该输出云:&data[0].isi=0&data[1].isi=0&data[100].isi=0&data[1000].isi=0&data[111].isi=0&data[1111].isi=0&data[112].isi=0&data[2].isi=0&data[3].isi=0两种排序的输出不同。我需要使VB.Net输出与PHP输出相同。这样做很热?
1 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
如果您使用的是 VB 2005 或更高版本,则不应使用ArrayList. 改用 a List(Of String)。然后你可以改变这个:
coba.Sort()
对此:
coba.Sort(Function(x, y) String.Compare(x, y, StringComparison.Ordinal))
ArrayList如果您出于某种原因确实必须使用 ,您仍然可以使用 做类似的事情,但这涉及定义您自己的类:
Public Class OrdinalStringComparer
Implements IComparer
Public Function Compare(x As Object, y As Object) As Integer Implements IComparer.Compare
Return String.Compare(DirectCast(x, String), DirectCast(y, String), StringComparison.Ordinal)
End Function
End Class
然后在调用时传递一个实例Sort:
coba.Sort(New OrdinalStringComparer)
请注意,如果您想知道序数比较是如何执行的以及替代方案是什么,您应该查看StringComparison枚举的文档。
- 1 回答
- 0 关注
- 156 浏览
添加回答
举报
0/150
提交
取消