查找“-****-&引用;在字符串中,其中每个星表示VBA中的一个整数(0到9)
我的大脑现在有点挣扎,我正在努力完成标题中所说的。重申一下,如果我有一个任意字符串,我想找到四个连续数字(整数值在0和9之间)的位置,用两个“-”分隔,那么我需要找到“-***-”,其中每个“*”表示0和9之间的整数。函数的理想返回值是第一个“-”的位置 到目前为止我已经尝试过的,它返回任意字符串中的所有整数。我没能走得更远了查找“-****-&引用;在字符串中,其中每个星表示VBA中的一个整数(0到9),vba,Vba,我的大脑现在有点挣扎,我正在努力完成标题中所说的。重申一下,如果我有一个任意字符串,我想找到四个连续数字(整数值在0和9之间)的位置,用两个“-”分隔,那么我需要找到“-***-”,其中每个“*”表示0和9之间的整数。函数的理想返回值是第一个“-”的位置 到目前为止我已经尝试过的,它返回任意字符串中的所有整数。我没能走得更远了 Function onlyDigits(s As String) As Integer Dim retval As String ' This is the
Function onlyDigits(s As String) As Integer
Dim retval As String ' This is the return string. '
Dim i As Integer ' Counter for character position. '
Dim firstDashPosition As Integer
Dim foundDash As Boolean
foundDash = False
firstDashPosition = 0
Debug.Print s
retval = ""
For i = 1 To Len(s)
If Mid(s, i, 1) Like "-" Then
If foundDash = True Then
retval = retval + "-"
firstDashPosition = i
onlyDigits = firstDashPosition - 6
Exit Function
End If
Debug.Print "here"
foundDash = True
retval = retval + "-"
ElseIf Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" And foundDash = True Then
retval = retval + Mid(s, i, 1)
Else
foundDash = False
retval = ""
End If
Next
onlyDigits = firstDashPosition
End Function
函数仅将数字(作为字符串)作为整数
Dim retval As String“这是返回字符串。”
Dim i为整数“字符位置计数器”
将第一个位置设置为整数
Dim-foundDash作为布尔值
foundDash=False
firstDashPosition=0
调试。打印s
retval=“”
对于i=1到Len(s)
如果Mid(s,i,1)喜欢“-”,那么
如果foundDash=True,则
retval=retval+“-”
firstDashPosition=i
onlyDigits=firstDashPosition-6
退出功能
如果结束
调试。打印“此处”
foundDash=True
retval=retval+“-”
如果Mid(s,i,1)>=“0”和Mid(s,i,1)我想我是在漫长的一天之后累了。如果有人感兴趣,下面是代码,我在问题中编辑了它
Function onlyDigits(s As String) As Integer
Dim retval As String ' This is the return string. '
Dim i As Integer ' Counter for character position. '
Dim firstDashPosition As Integer
Dim foundDash As Boolean
foundDash = False
firstDashPosition = 0
Debug.Print s
retval = ""
For i = 1 To Len(s)
If Mid(s, i, 1) Like "-" Then
If foundDash = True Then
retval = retval + "-"
firstDashPosition = i
onlyDigits = firstDashPosition - 6
Exit Function
End If
Debug.Print "here"
foundDash = True
retval = retval + "-"
ElseIf Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" And foundDash = True Then
retval = retval + Mid(s, i, 1)
Else
foundDash = False
retval = ""
End If
Next
onlyDigits = firstDashPosition
End Function
函数仅将数字(作为字符串)作为整数
Dim retval As String“这是返回字符串。”
Dim i为整数“字符位置计数器”
将第一个位置设置为整数
Dim-foundDash作为布尔值
foundDash=False
firstDashPosition=0
调试。打印s
retval=“”
对于i=1到Len(s)
如果Mid(s,i,1)喜欢“-”,那么
如果foundDash=True,则
retval=retval+“-”
firstDashPosition=i
onlyDigits=firstDashPosition-6
退出功能
如果结束
调试。打印“此处”
foundDash=True
retval=retval+“-”
ElseIf Mid(s,i,1)>=“0”和Mid(s,i,1)正则表达式可能是更好的解决方案,但简单的一次性解决方案可能是
Function onlyDigits(s As String) As Integer
Dim i As Integer
For i = 1 To Len(s)
If Mid$(s, 1, 6) Like "-[0-9][0-9][0-9][0-9]-" Then
onlyDigits = i
Exit Function
EndIf
Next
onlyDigits = -1
End Function
关于VBA中的正则表达式可能是一个很好的起点,您也可以使用str-Like“-[0-9][0-9][0-9][0-9]-”
希望我知道这个lol