- -..星期六我朋友问我
'要求:把 字符串 "a,1|b,4|c,2" , "b,3|a,4|k,2" 合并输出成,相同合并,排序输出

'写了数组类来处理这个问题

Public Class MyArrayClass MyArray
'继承ArrayList
Inherits ArrayList
'自定义个添加新元素的函数

Public Sub AddObj()Sub AddObj(ByVal obj As MyObj)
Dim OldObj As MyObj = Nothing
For i As Integer = 0 To Me.Count - 1
If Me.Item(i).Name = obj.Name Then OldObj = Me.Item(i)
Next
If OldObj Is Nothing Then
Me.Add(obj)
Else
OldObj.Value += obj.Value
End If
End Sub

Public Function WriteObj()Function WriteObj() As String
Dim reStr As String = String.Empty
For Each Obj As MyObj In Me
reStr += Obj.Name & "," & Obj.Value
If Not Obj Is Me(Me.Count - 1) Then reStr += "|"
Next
Return reStr
End Function
End Class
'用于加入数组的对象

Public Class MyObjClass MyObj
Public Name As String '用来纪录名称(a,b,c什么的)
Public Value As Integer '用来纪录值
'构造函数

Public Sub New()Sub New(ByVal NewName As String, ByVal NewValue As Integer)
Me.Name = NewName
Me.Value = NewValue
End Sub
End Class
'排序接口

Public Class MyIComparerClass MyIComparer
Implements IComparer
'比较Name排序

Private Function Compare()Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Return String.Compare(CType(x, MyObj).Name, CType(y, MyObj).Name)
End Function
End Class
'准备工作结束
'现在我门有MyObj:纪录对象,MyArray:处理对象数组,MyIComparer:排序接口
'以下简单用法

Public Sub AddArry()Sub AddArry(ByVal Arry As MyArray, ByVal Str As String)
Dim StrArry() As String = Split(Str, "|")
For Each aStr As String In StrArry
Dim aStrArry() As String = Split(aStr, ",")
Dim obj As New MyObj(aStrArry(0), aStrArry(1))
Arry.AddObj(obj)
Next
End Sub


Public Function Test()Function Test() As String
Dim Str1 As String = "a,1|b,4|c,2"
Dim Str2 As String = "b,3|a,4|k,2"
Dim Arry As New MyArray
Dim ICom As New MyIComparer
Me.AddArry(Arry, Str1)
Me.AddArry(Arry, Str2)
Arry.Sort(ICom)
Return Arry.WriteObj
End Function

把 字符串 "a,1|b,4|c,2" , "b,3|a,4|k,2" 合并输出成,相同合并,排序输出的问题...
因为懒写得乱七八糟的 也没测试 后来发现很 有问题 ,又认认真真再写了一次 ,测试OK!
写的过程中.我发现很多以前用过的东西都忘记怎么用了..懒真的不行啊...所以我决定写下来..纪录一下...
'要求:把 字符串 "a,1|b,4|c,2" , "b,3|a,4|k,2" 合并输出成,相同合并,排序输出
'写了数组类来处理这个问题
Public Class MyArrayClass MyArray
'继承ArrayList
Inherits ArrayList
'自定义个添加新元素的函数
Public Sub AddObj()Sub AddObj(ByVal obj As MyObj)
Dim OldObj As MyObj = Nothing
For i As Integer = 0 To Me.Count - 1
If Me.Item(i).Name = obj.Name Then OldObj = Me.Item(i)
Next
If OldObj Is Nothing Then
Me.Add(obj)
Else
OldObj.Value += obj.Value
End If
End Sub
Public Function WriteObj()Function WriteObj() As String
Dim reStr As String = String.Empty
For Each Obj As MyObj In Me
reStr += Obj.Name & "," & Obj.Value
If Not Obj Is Me(Me.Count - 1) Then reStr += "|"
Next
Return reStr
End Function
End Class
'用于加入数组的对象
Public Class MyObjClass MyObj
Public Name As String '用来纪录名称(a,b,c什么的)
Public Value As Integer '用来纪录值
'构造函数
Public Sub New()Sub New(ByVal NewName As String, ByVal NewValue As Integer)
Me.Name = NewName
Me.Value = NewValue
End Sub
End Class
'排序接口
Public Class MyIComparerClass MyIComparer
Implements IComparer
'比较Name排序
Private Function Compare()Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Return String.Compare(CType(x, MyObj).Name, CType(y, MyObj).Name)
End Function
End Class
'准备工作结束
'现在我门有MyObj:纪录对象,MyArray:处理对象数组,MyIComparer:排序接口
'以下简单用法
Public Sub AddArry()Sub AddArry(ByVal Arry As MyArray, ByVal Str As String)
Dim StrArry() As String = Split(Str, "|")
For Each aStr As String In StrArry
Dim aStrArry() As String = Split(aStr, ",")
Dim obj As New MyObj(aStrArry(0), aStrArry(1))
Arry.AddObj(obj)
Next
End Sub

Public Function Test()Function Test() As String
Dim Str1 As String = "a,1|b,4|c,2"
Dim Str2 As String = "b,3|a,4|k,2"
Dim Arry As New MyArray
Dim ICom As New MyIComparer
Me.AddArry(Arry, Str1)
Me.AddArry(Arry, Str2)
Arry.Sort(ICom)
Return Arry.WriteObj
End Function

本文介绍了一种使用自定义数组类处理字符串合并的方法。通过创建MyArrayClass类来合并两个特定格式的字符串,并按名称排序输出结果。文章展示了如何定义类、实现排序接口以及最终输出合并后的有序字符串。
1419

被折叠的 条评论
为什么被折叠?



