Foxtable(狐表)用户栏目专家坐堂 → 关于提取字符串中的数字


  共有4151人关注过本帖树形打印复制链接

主题:关于提取字符串中的数字

帅哥哟,离线,有人找我吗?
hfapplehao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
关于提取字符串中的数字  发帖心情 Post By:2021/12/7 9:22:00 [只看该作者]

想写这么一个函数,用来提取一个字符串中指定长度的数字,

比如
a125
b1254
c214
1d5624f
d12

如果输入3,想提取3位数及以更大的数字(3位数以下的自动舍弃)
返回的结果就是
125
1254
214
5624

想了这么一个思路,就是挨个检测字符,判断是不是数字,如果是则加入到集合中,最后对集合中的元素进行合并操作。可是这种方法无法处理小数点
比如利泰1.35 处理后的结果就是135.这显然是不符合要求的。想请教下老师有什么好方法没有?

以上疑惑,求老师指点一二

谢谢




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110766 积分:563762 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 9:40:00 [只看该作者]

Dim s As String="1234df22sdfds555"
Dim c As Integer = 3 ‘3位数及以更大的数字
Dim p As String = "\d{" & c & ",}"
Dim rgx As New System.Text.RegularExpressions.Regex(p)
For Each  match As System.Text.RegularExpressions.Match In rgx.Matches(s)
    Output.Show(match.Value )
Next

 回到顶部
帅哥哟,离线,有人找我吗?
hfapplehao
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
  发帖心情 Post By:2021/12/7 14:00:00 [只看该作者]

问题是结局了。可是遇到有小数点的话就不行了
见下图

图片点击可在新窗口打开查看此主题相关图片如下:数据123.png
图片点击可在新窗口打开查看
 有办法把小数也提取出来吗?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110766 积分:563762 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 14:10:00 [只看该作者]

小数点想怎么处理?2.5算是1位?2位?还是3位?

 回到顶部
帅哥哟,离线,有人找我吗?
hfapplehao
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
  发帖心情 Post By:2021/12/7 16:11:00 [只看该作者]

这两个没什么变化呀

图片点击可在新窗口打开查看此主题相关图片如下:215.2.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110766 积分:563762 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 17:16:00 [只看该作者]

Dim p As String = "[\d.]{" & c & ",}"

 回到顶部
帅哥哟,离线,有人找我吗?
hfapplehao
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
  发帖心情 Post By:2021/12/7 22:18:00 [只看该作者]

小数点想法是可以按照正常的数字进行比较的
s = “a23352bb2sc3.15”
比如我要输入3,就是提取字符串中的大于等于100数字,然后3.15能被过滤掉,结果就是
23352

不过新的公式也解决问题了,就是需要处理一步。已经解决很大的问题了,谢谢老师


 回到顶部