以文本方式查看主题 - 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
|