以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何根据数据特征读出某些数据?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123585)

--  作者:旭日生
--  发布时间:2018/8/18 11:56:00
--  如何根据数据特征读出某些数据?
有一“文号”列数据,一般均为”苏发[2014]03号“、”苏办发[2013]112号“之类的,其共同特征是均有方括号"[]"
如何通过编程解决下面问题?
1、将”[“前的字号读出(如“苏发”、“苏办发”等),写入”字号“列?
2、将”[]’中的年度读出(如2013、2014),写入“年度列”?
3、将“]”后面,“号”前的数字(如03,112)读出,写入“编号”列?

--  作者:有点蓝
--  发布时间:2018/8/18 11:59:00
--  
Dim s As String = "苏办发[2013]112号"

Dim arr() As String = s.Split(new Char(){"[","]"})
For Each s1 As String In arr
    Output.Show(s1)
Next

--  作者:旭日生
--  发布时间:2018/8/18 13:09:00
--  
蓝版主给的好象不是我想要的。我想由“文号”列读出数据,逐行分别写入“字号”、“年度”和“编号”列。
下面这个网址,曾经是我要的,但因为下面这句弄不明白,写出来后总有问题。
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=104950&skin=0

 Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=\\()[0-9]+?(?=\\))")





--  作者:有点蓝
--  发布时间:2018/8/18 14:13:00
--  
不是很复杂的规则,没有必要使用正则,能够达到效果就行了

Dim s As String = "苏办发[2013]112号"

Dim arr() As String = s.Split(new Char(){"[","]"})
dr("字号") = arr(0)
dr("年度") = arr(1)
dr("编号") = arr(2).replace("","")

--  作者:旭日生
--  发布时间:2018/8/18 16:20:00
--  
谢谢!写成下面的代码,可以执行得到结果。

        Dim dr As DataRow = e.DataRow
        Dim arr() As String = str1.Split(new Char(){"[","]","号"})
        dr("字号") = arr(0)
        dr("年度") = arr(1)
        dr("类目") = arr(2)

但首先会提示下面的错误信息,不太明白为什么会发生?

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.7.28.1
错误所在事件:表,文件级目录,DataColChanged
详细错误信息:
调用的目标发生了异常。
索引超出了数组界限。

调用的目录发生异常!

--  作者:有点蓝
--  发布时间:2018/8/18 16:24:00
--  
数据不是统一的这种格式吧:"苏办发[2013]112号"
--  作者:旭日生
--  发布时间:2018/8/18 16:29:00
--  
可能要加一个条件判断,否则,不是类似”苏办发[2013]112号“的数据,就会提示超出数组界限。
--  作者:有点蓝
--  发布时间:2018/8/18 16:45:00
--  
数据如果没有规律就很难搞了
--  作者:旭日生
--  发布时间:2018/8/18 16:48:00
--  
确实不是统一格式,只有3种情况,一种是”无“,一种是”空“,另一种就是”苏办发[2013]112号“。
怎样加一个条件判断,只计算那种标准的情况,其它2种情况保持数据不变呢?

--  作者:有点蓝
--  发布时间:2018/8/18 16:50:00
--  
只有3种情况好办,判断一下字符是否包含中括号([)就行了

if str1.contains("[") then
拆分处理
end if