主题:字符串问题
jinfei
[专家分:0] 发布于 2008-01-12 01:36:00
大家好:请教一个问题,在一个字符串abs="1,2,12,23,2,3,12"里,如何知道1出现1次,2出现2次,12出现2次等,谢谢
回复列表 (共10个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-01-12 09:53:00
在循环内使用匹配函数
板凳
a97191 [专家分:4040] 发布于 2008-01-12 09:53:00
absd = "1,2,12,23,2,3,12"
arr = Split(absd, ",")
For i = 0 To UBound(arr)
c = 0
For j = 0 To UBound(arr)
If arr(i) = arr(j) Then
c = c + 1
End If
Next
Debug.Print arr(i) & "出现" & c & "次"
Next
3 楼
xiaochuanyuan [专家分:260] 发布于 2008-01-12 13:06:00
Dim absd, a, b, c
absd = "1,2,12,23,2,3,12"
a = UBound(Split(absd, "1"))'1出现的次数
b = UBound(Split(absd, "2"))'2出现的次数
c = UBound(Split(absd, "12"))'12出现的次数
Debug.Print a, b, c
4 楼
xiaochuanyuan [专家分:260] 发布于 2008-01-12 13:06:00
Dim absd, a, b, c
absd = "1,2,12,23,2,3,12"
a = UBound(Split(absd, "1"))
b = UBound(Split(absd, "2"))
c = UBound(Split(absd, "12"))
Debug.Print a, b, c
5 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-12 13:15:00
恩,小船元的方法不错!
我要是楼主,就给你满分。
仿照你的写个通用函数。
Public Function 次数(原字符串 As String, 子字符串 As String) As Integer
次数 = UBound(Split(原字符串, 子字符串))
End Function
7 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-12 14:03:00
我不管,你把姓写在后头,我叫你的时候,一样把姓放在后头。哈哈哈
8 楼
btxdlibin [专家分:2430] 发布于 2008-01-12 14:33:00
absd="," & absd & ","
UBound(Split(absd, ",1,"))
9 楼
天天学习 [专家分:4570] 发布于 2008-01-12 22:53:00
[quote]在一个字符串abs="1,2,12,23,2,3,12"里,如何知道1出现1次,2出现2次,12出现2次等[/quote]
LZ要求的正确结果为:1出现1次,2出现2次
而如果用3楼的方法,结果为:1出现3次,2出现5次。所以此次如果只是简单地用上面的代码的话,还不行。
不过,用split来实现统计某字符出现的次数的这种方法还是有借鉴的地方,记得在以前的某个帖子中我是首次看到这种应用,当时惊叹不已。
其实,略经修改,用split还是可以符合题目要求的功能的。如下:
Dim absd, a, b, c
absd = "1,2,12,23,2,3,12"
absd="," & absd & "," '//在原字符串前后各加一个逗号分隔符
a = UBound(Split(absd, [color=red]",1,"[/color]))'1出现的次数
b = UBound(Split(absd, [color=red]",2,"[/color]))'2出现的次数
c = UBound(Split(absd, [color=red]",12,"[/color]))'12出现的次数
Debug.Print a, b, c
[color=red]PS:发完贴才发现,其实8楼已经提出这个问题了。我画蛇添足了[/color]
10 楼
xiaochuanyuan [专家分:260] 发布于 2008-01-13 08:58:00
谢谢,我居然把题目看错了
我来回复