甜老师好!
您以前写的相似度代码,我想在第二段代码的加黑地方应用。
原先代码的意思是:[案号]和[被告]都相同时,就引用数据,否则就添加新行;
实际应用中,[被告]的描述可能有些不同,因为共同的字符不固定,前后的包含关系也不确定。比如,“章丘市人民政府”和“济南市章丘区人民政府”。
因此,我希望,如果[被告]的相似度>70(相同字符与短字符串的占比)就认为找到了,进而引用数据;否则才添加新行。
第二段代码怎样修改呢?自己改不了,请老师指教。
谢谢!
1、--------------------------------------
Dim sa As String = "章丘市人民政府"
Dim sb As String = "济南市章丘区人民政府"
Dim count As Integer
'For i As Integer = 0 To sa.Length - 1
For i As Integer = 0 To IIF((sa.Length-sb.Length)< 0, sa, sb).Length - 1 '短字符长度
'If sb.Contains(sa(i)) Then
If IIF((sa.Length-sb.Length)> 0, sa, sb).Contains(IIF((sa.Length-sb.Length)< = 0, sa, sb)(i)) Then '长字符包括短字符
count += 1
End If
Next
msgbox(IIF((sa.Length-sb.Length)< =0, sa.Length, sb.Length)) '短字符长度
msgbox(IIF((sa.Length-sb.Length) > 0, sa.Length, sb.Length)) '长字符长度
msgbox(count) '共同字符数
msgbox(count/IIF((sa.Length-sb.Length)< = 0, sa.Length, sb.Length)*100%) '占比-短
msgbox(count/IIF((sa.Length-sb.Length)> 0, sa.Length, sb.Length)*100%) '占比-长
2、---------------------------------------
If e.DataCol.name = "庭审笔录_被告出庭" Then
Dim str As String = e.NewValue
If str > "" Then
Dim ary() As String = str.Replace("被告", "@").split("@")
For i As Integer = 0 To ary.length-1
str = ary(i).trim()
If str > "" Then
str = "被告" & str
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=被告).*?(?=。)") '提取被告单位名称
Dim s As String = mc(0).value
'到机关负责人出庭表去找
Dim dr = DataTables("机关负责人出庭").Find("[案号] = '" & e.DataRow("案号") & "' And
[被告] = '" & s.split(",")(0) & "'")
If dr Is Nothing Then
dr = DataTables("机关负责人出庭").AddNew
End If
dr("案号") = e.DataRow("案号")
dr("被告") = s.split(",")(0)
dr("庭审笔录被告出庭") = str
dr("开庭时间") = e.DataRow("开庭排期_开庭时间")
End If
Next
End If
End If