【问题标题】:How to determine a string within a string includes all numbers如何确定字符串中的字符串是否包含所有数字
【发布时间】:2019-06-11 21:45:55
【问题描述】:

我有一个假定为字代码的字符串。它包括两个字母,后跟一个数字。

我正在尝试确定哪些字代码组合都在该字符串中。我通过将每个单词/数字放在一个数组中来分离字母,但我不知道如何知道例如 16-28 是否意味着 16 到 28 之间的所有数字。

这是我的代码:

Dim arrayString() As String
arrayString = Split("MH12, MH13, MH16-28").Value, ",")
For i = 0 To UBound(arrayString)
    msgString = arrayString(i) & vbCr
Next i

我需要能够确定的输出应该是:

MH12, MH13, MH16, MH17, MH18, MH19, MH20, MH21, MH22, MH23, MH24, MH25, MH26, MH27, MH28

【问题讨论】:

  • 为什么不能输入完整的字符串?
  • @SJR 我需要在代码中弄清楚 MH16-28 表示 MH16、MH17、MH18、MH19、MH20、MH21、MH22、MH23、MH24、MH25、MH26、MH27、MH28 以便我可以使用每个字符串来操作其他用途,不,我不能在字符串中列出它。

标签: arrays vba string


【解决方案1】:

这是一个你可能会觉得有用的函数:

Function ExpandString(str As String, Optional delim As String = ",") As String
    Dim terms As Variant
    Dim i As Long, j As Long, m As Long, n As Long
    Dim term As String, result As String, numstr As String

    terms = Split(str, delim)
    For i = 0 To UBound(terms)
        term = Trim(terms(i))
        If Not term Like "*-*" Then
            result = result & delim & term
        Else
            numstr = Mid(term, 3)
            m = Split(numstr, "-")(0)
            n = Split(numstr, "-")(1)
            For j = m To n
                result = result & delim & Left(term, 2) & j
            Next j
        End If
    Next i
    If Len(result) >= 2 Then result = Mid(result, 1 + Len(delim))
    ExpandString = result
End Function

例如,在即时窗口中:

?ExpandString("MH12, MH13, MH16-28")
MH12,MH13,MH16,MH17,MH18,MH19,MH20,MH21,MH22,MH23,MH24,MH25,MH26,MH27,MH28

还有(注意逗号后面的空格):

?expandstring("MH12, MH13, MH16-28", ", ")
MH12, MH13, MH16, MH17, MH18, MH19, MH20, MH21, MH22, MH23, MH24, MH25, MH26, MH27, MH28

【讨论】:

  • 你是我的救星!
猜你喜欢
  • 1970-01-01
  • 2012-01-05
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
相关资源
最近更新 更多