回 帖 发 新 帖 刷新版面

主题:字符串问题

大家好:请教一个问题,在一个字符串abs="1,2,12,23,2,3,12"里,如何知道1出现1次,2出现2次,12出现2次等,谢谢

回复列表 (共10个回复)

沙发

在循环内使用匹配函数

板凳

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 楼

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 楼


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 楼

恩,小船元的方法不错!
我要是楼主,就给你满分。
仿照你的写个通用函数。
Public Function 次数(原字符串 As String, 子字符串 As String) As Integer
    次数 = UBound(Split(原字符串, 子字符串))
End Function

6 楼


我叫袁小川

7 楼

我不管,你把姓写在后头,我叫你的时候,一样把姓放在后头。哈哈哈

8 楼

absd="," & absd & ","
UBound(Split(absd, ",1,"))

9 楼

[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 楼


谢谢,我居然把题目看错了

我来回复

您尚未登录,请登录后再回复。点此登录或注册