以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何在字符串中提取特定字段 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=188595) |
-- 作者:ZJZK2018 -- 发布时间:2023/10/2 21:23:00 -- 如何在字符串中提取特定字段 如何在字符串中提取下面红色特定字段,如下: 项目业主为绍兴柯桥杭金衢联络线高速公路有限公司,建设资金来自自筹(资金来源),资金已落实,招标人为绍兴柯桥杭金衢联络线高速公路有限公司;项目已具备招标条件,现对该项目的施工进行公开招标,实行资格后审。招标代理机构为浙江中诚工程管理科技有限公司。 |
-- 作者:有点蓝 -- 发布时间:2023/10/2 23:30:00 -- 参考:http://www.foxtable.com/webhelp/topics/1338.htm |
-- 作者:ZJZK2018 -- 发布时间:2023/10/3 1:36:00 -- 老师我用一种较笨办法,有没有更好的办法? 我想如何通过标点符号的位置进行定位,如“项目业主为绍兴柯桥杭金衢联络线高速公路有限公司,建设资金来自自筹” 以"项目业主" 和 这个豆号进行提取,关键是这个豆号位置号如何取值?IsPunctuation Dim str As String = "项目业主为绍兴柯桥杭金衢联络线高速公路有限公司,建设资金来自自筹(资金来源),资金已落实,招标人为绍兴柯桥杭金衢联络线高速公路有限公司;项目已具备招标条件,现对该项目的施工进行公开招标,实行资格后审。招标代理机构为浙江中诚工程管理科技有限公司。" Dim ary = str.split(New Char(){",", "。", ";", "、"}) For Each st As String In ary \'Output.Show(st) If st.Contains("项目业主") Then Dim s As String Output.Show(st.Substring(5)) ElseIf st.Contains("招标人") Then Output.Show(st.Substring(4)) ElseIf st.Contains("招标代理机构") Then Output.Show(st.Substring(7)) End If Next 结果为: 绍兴柯桥杭金衢联络线高速公路有限公司 绍兴柯桥杭金衢联络线高速公路有限公司 浙江中诚工程管理科技有限公司 |
-- 作者:有点蓝 -- 发布时间:2023/10/3 9:25:00 -- 有没有什么固定的规则?如果没有,也只能这样 |
-- 作者:ZJZK2018 -- 发布时间:2023/10/17 12:39:00 -- 下面这段代码出错: For Each r As Row In Tables("招标公告").Rows Dim st As String = r("招标条件") st = StrToNarrow(st).Replace(vbcrlf,"") Dim nns() As String = st.Split(New Char(){",",".",";","?"}) \'Output.Show(st) For Each nn As String In nns If nn > "" If nn.Contains("招标人") And nn.Length > 10 Then If nn.SubString(nn.IndexOf("招标人")+3).SubString(0,nn.SubString(nn.IndexOf("招标人")+3).IndexOf("公司")+2).Trim("为",")",":").Length > 5 Output.Show(nn.SubString(nn.IndexOf("招标人")+3).SubString(0,nn.SubString(nn.IndexOf("招标人")+3).IndexOf("公司")+2).Trim("为",")",":")) End If End If End If Next Next |
-- 作者:ZJZK2018 -- 发布时间:2023/10/17 13:17:00 -- 1、为什么下面这段代码不出结果,但在“2023年1月5日9:30”加个空格又可以了”2023年1月5日 9:30“ Dim s As String = "5.2投标文件递交截止时间(投标截止时间,下同)为2023年1月5日9:30(北京时间,下同)?" Dim d As Date For i As Integer = 0 To s.Length - 10 If Date.TryParse(s.SubString(i,16),d) OrElse Date.TryParse(s.SubString(i,15),d) OrElse Date.TryParse(s.SubString(i,14),d) Then output.show(d) Exit For End If Next 2、2023-01-05 09:30:00 如何不要这个秒 |
-- 作者:有点蓝 -- 发布时间:2023/10/17 13:31:00 -- 回5楼,IndexOf的用法出错,比如nn.IndexOf("招标人")查不到结果就被出错,正确用法是 dim i as integer = nn.IndexOf("招标人") if i > -1 then 其它处理 endif
|
-- 作者:有点蓝 -- 发布时间:2023/10/17 13:32:00 -- 回6楼 1、加空格才是合法的日期格式
|
-- 作者:ZJZK2018 -- 发布时间:2023/10/17 14:55:00 -- 象下面这个or有没有更简办法?? If elems(n).InnerText.Contains("投标人资格要求") Or elems(n).InnerText.Contains("投标人资格条件") Or elems(n).InnerText.Contains("投标资格条件") Or elems(n).InnerText.Contains("投标人的资格要求") Then |
-- 作者:有点蓝 -- 发布时间:2023/10/17 15:01:00 -- 没有 |