String 替换字符串vb6中除数字以外的所有内容
我做了研究,看到了很多关于这方面的帖子,但在VB6中找不到解决方案 那么如何在VB6中执行此操作 假设我得到一个字符串,如: “从前有一个小孩,他想离家1000英里以外的地方走一走……”String 替换字符串vb6中除数字以外的所有内容,string,vb6,replace,String,Vb6,Replace,我做了研究,看到了很多关于这方面的帖子,但在VB6中找不到解决方案 那么如何在VB6中执行此操作 假设我得到一个字符串,如: “从前有一个小孩,他想离家1000英里以外的地方走一走……” 我只想在这个字符串中获得与字符串分离的数字“1000”,并想替换整个字符串,但数字应该静止不动。最简单的方法是遍历字符串并将数字复制到新的字符串: Function GetNumbers(Value As String) As String Dim Index As Long Dim Final As Stri
我只想在这个字符串中获得与字符串分离的数字“
1000
”,并想替换整个字符串,但数字应该静止不动。最简单的方法是遍历字符串并将数字复制到新的字符串:
Function GetNumbers(Value As String) As String
Dim Index As Long
Dim Final As String
For Index = 1 To Len(Value)
If Mid(Value, Index, 1) Like "[0-9]" Then
Final = Final & Mid(Value, Index, 1)
End If
Next
GetNumbers = Final
End Function
结果是:
?GetNumbers("abc12def345")
12345
当有很多数字时,使用长字符串效率很低。基于Deanna的答案:
Function GetNumbers(Value As String) As String
Dim Index As Long
Dim Digit As String
Dim Final As String
Dim Count As Long
Count = 1
GetNumbers = Space(Len(Value))
For Index = 1 To Len(Value)
Digit = Mid(Value, Index, 1)
If Digit Like "[0-9]" Then
Mid(GetNumbers, Count, 1) = Digit
Count = Count + 1
End If
Next
GetNumbers = Left(GetNumbers, Count - 1)
End Function
此函数应为O(n)
您可以使用正则表达式:
Dim NumExp As New RegExp
NumExp.Pattern = "\D"
NumExp.Global = True
strOutput = NumExp.Replace(strWhatToReplace, strReplaceWithWhat)
更高效的版本。我把它留给读者作为练习,因为我很懒:pA更好或更流行的解决方案@neosonne这是一种不同的语言,c#而不是VB6。没关系,这两种语言做的都一样,只是语法不同:
函数GetNumbers(val作为字符串)作为字符串返回CType(val.Where(Function(c)Char.IsDigit(c)).ToArray(),字符串)结束函数
@neosonne这不是有效的VB6语法。注意,是VB6,而不是VB.net。
Dim NumExp As New RegExp
NumExp.Pattern = "\D"
NumExp.Global = True
strOutput = NumExp.Replace(strWhatToReplace, strReplaceWithWhat)
nStr = "abc12def345"
For X = 1 To Len(nStr)
If IsNumeric(Mid(nStr, X, 1)) = True Then
nNum = nNum & Mid(nStr, X, 1)
End If
Next X
MsgBox nNum