首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串"times_series_graphs 34“中提取数字

从字符串"times_series_graphs 34“中提取数字
EN

Stack Overflow用户
提问于 2015-07-24 18:31:02
回答 3查看 33关注 0票数 0

我有一个从1到34的图表列表,名为"times_series_graphs 1“、"times_series_graphs 2”、“times_series_graphs 3”等等,一直到34。

在VBA中是否有使用右、左、函数等来提取数字的方法?

所以我只想要1,2,.....34

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-24 18:36:06

如果字符串的左边部分是静态的,那么有两种简单的方法:

  1. times_series_graphs "替换为"“: myNumber =替换(myString,"times_series_graphs ","")
  2. 通过字符Split使用" "函数,并保留生成数组的第二个元素: myNumber = Split(myString,“")(1)
票数 1
EN

Stack Overflow用户

发布于 2015-07-24 18:36:21

使用正确的函数

因为只有34,所以您可以使用右/左函数来提取最后两个字符,然后修剪它。

代码语言:javascript
复制
Dim yourString As String = "times_series_graphs 1"
Dim numberString As String = LTrim(Right(yourString , 2))

但是,如果您超过两个字符,这个解决方案很快就会崩溃,因为您不能再只选择数字和空格了。我建议以下几种选择之一。

标记字符串

第一个选项是使用空格作为分隔符来标记字符串。您将在空格上拆分字符串并获得第二个令牌。

代码语言:javascript
复制
Dim yourStringAs String = "times_series_graphs 1" 
Dim tokens() As String = Split(yourString)

使用正则表达式

另一种选择是使用Regex。下面的regex表达式将捕获第二个组中的键和regex匹配返回的第三个组中的值(number)。

代码语言:javascript
复制
([a-zA-Z0-9_]+)\s([0-9]+)

还有很多其他的方法来提取价值。对我来说,我会选择regex选项,因为它提供了最灵活的前进方向。如果您得到的字符串在数字之前没有相同的键,则允许您快速访问两个字段以进行比较。

票数 1
EN

Stack Overflow用户

发布于 2015-07-24 19:04:52

如果您不知道字符串将包含什么,您可以在其中循环查找数字。我想你错过的是:

代码语言:javascript
复制
IsNumeric(myString)

这将返回一个真或假。这方面的完整代码如下:

代码语言:javascript
复制
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)

除此之外,您还可以使用正则表达式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31617425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档