Foxtable(狐表)用户栏目专家坐堂 → 如何在字符串中提取特定字段


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

主题:如何在字符串中提取特定字段

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
如何在字符串中提取特定字段  发帖心情 Post By:2023/10/2 21:23:00 [显示全部帖子]

如何在字符串中提取下面红色特定字段,如下:
项目业主绍兴柯桥杭金衢联络线高速公路有限公司,建设资金来自自筹(资金来源),资金已落实招标人绍兴柯桥杭金衢联络线高速公路有限公司;项目已具备招标条件,现对该项目的施工进行公开招标,实行资格后审。招标代理机构浙江中诚工程管理科技有限公司



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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By: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
结果为:
绍兴柯桥杭金衢联络线高速公路有限公司
绍兴柯桥杭金衢联络线高速公路有限公司
浙江中诚工程管理科技有限公司




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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By: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


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


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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By: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  如何不要这个秒


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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By: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


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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/20 15:51:00 [显示全部帖子]

概算”这个二个字符的位置是可以确定的,如何来确定这二个字符前面相近一个标点符号的位置??

Dim st As String = " 务周期:自合关,资料之日,本次招标范估算(或概算)造价577256万元,采用投标资格后审方式招标."
msgbox(st.IndexOf("概算"))


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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/30 9:14:00 [显示全部帖子]

老师好,我要得到“概算”二字后面的最近一个标点符号(如红色的),但不确定是哪个标点?下面代码给出很多值,如何调整?谢谢

Dim st As String = " 务周期:自合关,资料之日,本次招标范估算(或概算)造价577256万元,采用投标资格后审方式招标."
Dim bds() As String = {",",".",";","?"}
For Each bd As String In bds
    msgbox(st.IndexOf(bd, st.IndexOf("概算")))
Next
[此贴子已经被作者于2023/10/30 9:14:56编辑过]

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/30 9:51:00 [显示全部帖子]

i的值为-1,-1,36,49,不理解为什么要加  “AndAlso i < min ”这个条件,而且min = 999999又远大于49啊?不明白请指点
[此贴子已经被作者于2023/10/30 9:57:07编辑过]

 回到顶部