我有一个从1到34的图表列表,名为"times_series_graphs 1“、"times_series_graphs 2”、“times_series_graphs 3”等等,一直到34。
在VBA中是否有使用右、左、函数等来提取数字的方法?
所以我只想要1,2,.....34
发布于 2015-07-24 18:36:06
如果字符串的左边部分是静态的,那么有两种简单的方法:
times_series_graphs "替换为"“:
myNumber =替换(myString,"times_series_graphs ","")Split使用" "函数,并保留生成数组的第二个元素:
myNumber = Split(myString,“")(1)发布于 2015-07-24 18:36:21
使用正确的函数
因为只有34,所以您可以使用右/左函数来提取最后两个字符,然后修剪它。
Dim yourString As String = "times_series_graphs 1"
Dim numberString As String = LTrim(Right(yourString , 2))但是,如果您超过两个字符,这个解决方案很快就会崩溃,因为您不能再只选择数字和空格了。我建议以下几种选择之一。
标记字符串
第一个选项是使用空格作为分隔符来标记字符串。您将在空格上拆分字符串并获得第二个令牌。
Dim yourStringAs String = "times_series_graphs 1"
Dim tokens() As String = Split(yourString)使用正则表达式
另一种选择是使用Regex。下面的regex表达式将捕获第二个组中的键和regex匹配返回的第三个组中的值(number)。
([a-zA-Z0-9_]+)\s([0-9]+)还有很多其他的方法来提取价值。对我来说,我会选择regex选项,因为它提供了最灵活的前进方向。如果您得到的字符串在数字之前没有相同的键,则允许您快速访问两个字段以进行比较。
发布于 2015-07-24 19:04:52
如果您不知道字符串将包含什么,您可以在其中循环查找数字。我想你错过的是:
IsNumeric(myString)这将返回一个真或假。这方面的完整代码如下:
numberFound = False
For x = 1 To Len(myString)
temp = Mid(myString, x, 1)
If IsNumeric(temp) Then
working = working & temp
ElseIf numberFound Then
Exit For
End If
Next x
Final = CDbl(working)除此之外,您还可以使用正则表达式。
https://stackoverflow.com/questions/31617425
复制相似问题