You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中提取字符串中的重复与非重复数字

VB.NET 实现提取重复与非重复数字

实现思路

先清理输入字符串去除分隔符,再统计每个数字的出现频次,最后根据频次将数字分别归类到重复/非重复集合中。VB.NET中推荐用泛型List<T>替代动态数组,避免VBA中ReDim适配时的语法问题。

完整代码示例

Sub Main()
    Dim inputStr As String = "24-06-1966"
    ' 第一步:去除字符串中的"-"
    Dim cleanedStr As String = inputStr.Replace("-", "")
    
    ' 第二步:统计每个数字的出现次数
    Dim countDict As New Dictionary(Of Char, Integer)()
    For Each c As Char In cleanedStr
        If countDict.ContainsKey(c) Then
            countDict(c) += 1
        Else
            countDict.Add(c, 1)
        End If
    Next
    
    ' 第三步:分离重复数字和非重复数字
    Dim duplicateDigits As New List(Of Char)()
    Dim uniqueDigits As New List(Of Char)()
    
    For Each c As Char In cleanedStr
        If countDict(c) > 1 Then
            duplicateDigits.Add(c)
        Else
            uniqueDigits.Add(c)
        End If
    Next
    
    ' 输出结果
    Console.WriteLine($"重复数字:{String.Join(", ", duplicateDigits)}")
    Console.WriteLine($"非重复数字:{String.Join(", ", uniqueDigits)}")
End Sub

代码说明

  1. 字符串清理:用Replace方法直接移除所有-,得到纯数字字符串"24061966"。
  2. 频次统计:借助Dictionary<Char, Integer>记录每个数字字符的出现次数,遍历一次即可完成统计。
  3. 分类收集:再次遍历清理后的字符串,根据字典中的频次判断,将数字分别加入duplicateDigits(重复数字列表)和uniqueDigits(非重复数字列表)。这里会保留重复数字的所有实例(比如三个6都会被收集),符合需求中的结果。
  4. 结果输出:用String.Join将列表转为逗号分隔的字符串,方便查看。

为什么VBA的ReDim会报错?

VBA中的ReDim Preserve允许动态调整数组大小,但只能修改最后一维,且语法规则和VB.NET差异较大。VB.NET中数组是强类型且默认固定大小(即便用ReDim Preserve也有诸多限制),而泛型List<T>支持动态添加元素,无需手动调整大小,比动态数组更易用、更稳定。

内容的提问来源于stack exchange,提问作者SsD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:02:37