如何在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
代码说明
- 字符串清理:用
Replace方法直接移除所有-,得到纯数字字符串"24061966"。 - 频次统计:借助
Dictionary<Char, Integer>记录每个数字字符的出现次数,遍历一次即可完成统计。 - 分类收集:再次遍历清理后的字符串,根据字典中的频次判断,将数字分别加入
duplicateDigits(重复数字列表)和uniqueDigits(非重复数字列表)。这里会保留重复数字的所有实例(比如三个6都会被收集),符合需求中的结果。 - 结果输出:用
String.Join将列表转为逗号分隔的字符串,方便查看。
为什么VBA的ReDim会报错?
VBA中的ReDim Preserve允许动态调整数组大小,但只能修改最后一维,且语法规则和VB.NET差异较大。VB.NET中数组是强类型且默认固定大小(即便用ReDim Preserve也有诸多限制),而泛型List<T>支持动态添加元素,无需手动调整大小,比动态数组更易用、更稳定。
内容的提问来源于stack exchange,提问作者SsD
相关产品推荐
相关产品推荐

