以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于提取字符串中的数字 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173587) |
-- 作者:hfapplehao -- 发布时间:2021/12/7 9:22:00 -- 关于提取字符串中的数字 想写这么一个函数,用来提取一个字符串中指定长度的数字, 比如 a125 b1254 c214 1d5624f d12 如果输入3,想提取3位数及以更大的数字(3位数以下的自动舍弃) 返回的结果就是 125 1254 214 5624 空 想了这么一个思路,就是挨个检测字符,判断是不是数字,如果是则加入到集合中,最后对集合中的元素进行合并操作。可是这种方法无法处理小数点 比如利泰1.35 处理后的结果就是135.这显然是不符合要求的。想请教下老师有什么好方法没有? 以上疑惑,求老师指点一二 谢谢 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2021/12/7 14:00:00 -- 问题是结局了。可是遇到有小数点的话就不行了 见下图 有办法把小数也提取出来吗?
|
-- 作者:有点蓝 -- 发布时间:2021/12/7 14:10:00 -- 小数点想怎么处理?2.5算是1位?2位?还是3位? |
-- 作者:hfapplehao -- 发布时间:2021/12/7 16:11:00 -- 这两个没什么变化呀 |
-- 作者:有点蓝 -- 发布时间:2021/12/7 17:16:00 -- Dim p As String = "[\\d.]{" & c & ",}" |
-- 作者:hfapplehao -- 发布时间:2021/12/7 22:18:00 -- 小数点想法是可以按照正常的数字进行比较的 s = “a23352bb2sc3.15” 比如我要输入3,就是提取字符串中的大于等于100数字,然后3.15能被过滤掉,结果就是 23352 不过新的公式也解决问题了,就是需要处理一步。已经解决很大的问题了,谢谢老师 |