当前位置:编程学习 > VB >>

字符串中 空字段提取问题,请指教!

针对如下文本:
姓名    语文    数学    英语   化学   易做图
张三   78      98     99     67    88
李四   89             88     76     90 (该行有个字段为空)
王五   88      76      89     67    98

想把这些字符串存入一个二维数组,目前做法是:
(1)将字段的间隔均转换成1个空格;
While InStr(s, Space(2))
      s = Replace(s, Space(2), Space(1))
Loop
姓名 语文 数学 英语 化学 易做图
张三 78 98 99 67 88
李四 89 88 76 90
王五 88 76 89 67 98

(2)然后提取字符串中的字段存入数组:
Data(i,j)=Split(S, Space(1))(j)

由于第三行存在空字段,问题出来了,这一行少一个字段,这样这行的数据就错位了,且会报错,下标过界,请问,如何提取字段,能够将为空的字段给识别出来呢?比如识别出来后就赋0进去的。请指教谢谢! --------------------编程问答-------------------- 你是从数据库里面提还是别的
如果从数据库里同直接判断是不是空是空的话置这条记录这个字段为0 --------------------编程问答-------------------- 如果能保证相邻两数间的空格都是小于有空数据的两数之间的空格,那好办。假定相邻两数间的空格小于6,则你先s = Replace(s, Space(6), Space(1) & "0" & Space(1)),再做你后面的操作 --------------------编程问答-------------------- 数据源是文本文档的。列与列之间的空格不定,无法保证相邻两列间的空格就比有空数据的2列间的空格少的。

还有啥办法呢?请指教啊 --------------------编程问答--------------------
引用 3 楼 sunyangguan 的回复:
数据源是文本文档的。列与列之间的空格不定,无法保证相邻两列间的空格就比有空数据的2列间的空格少的。

还有啥办法呢?请指教啊

说实话,你这个从原数据上下功夫比写代码简单.
因为涉及到空数据,原数据最好不要用空格分隔,用逗号分隔数据,拿到数据后切割,然后左右trim一下字符串就可以了.
否则,你还得挨个判断哪个数据之间的空格数最多,然后去判断缺哪一列数据,逻辑上能实现,就是写代码麻烦. --------------------编程问答-------------------- 哎,是啊,如果是逗号间隔也好处理的,源数据不是我生成的,如果有一列数据可能全部为空的,如果是这种情况,有办法确定是哪一列数据全部为空么?(标题行正常的,没有为空的字段) --------------------编程问答--------------------
引用 3 楼 sunyangguan 的回复:
数据源是文本文档的。列与列之间的空格不定,无法保证相邻两列间的空格就比有空数据的2列间的空格少的。

还有啥办法呢?请指教啊


如果是这样的话,就连人都没法区分,不要说机器了,这是由空格的歧义造成(分别表示分隔符和空数据),如果没有其它数据参照的话,是没有办法还原的。(由于不清楚你的数据格式,所以不好说,如果你能手动区分,那机器就能分,若你都不能手动分,那机器也没法分) --------------------编程问答-------------------- 查查数据源是不是制表符分割的…… --------------------编程问答-------------------- 恩,确实,如果手动都区分不了的话,程序也一样了。
数据源有三种可能的分隔方式:个数不定的空格、逗号、Tab,请问如果是Tab或逗号分隔的话如何定位空字段的位置呢? --------------------编程问答-------------------- 来学习的 同样寻求这个问题解决方法 --------------------编程问答-------------------- 如果字段间隔是单个的Tab或,的话,直接提取就行的,如果是多个的话,情况和空格一样,确实不好区分哪个位置是空字段的。
目前源数据中确实存在空数据列的情况,而且以多个不定空格为间隔,哎,郁闷! --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 10 楼 sunyangguan 的回复:
如果字段间隔是单个的Tab或,的话,直接提取就行的,如果是多个的话,情况和空格一样,确实不好区分哪个位置是空字段的。
目前源数据中确实存在空数据列的情况,而且以多个不定空格为间隔,哎,郁闷!

还是多分析一下你的源数据,如是源数据是由机器生成的话,应该是能区分的,除非写程序的人故意这样做。 --------------------编程问答-------------------- 1 使用 Mid() 函数从各个字段的中间截断数据。

2 使用 Trim() 函数去除头尾的空格。如果得到空字符串,就是空字段。 --------------------编程问答-------------------- 很简单的一个道理就是: 让你自己打开文本判断是否有空字段, 你是如何判断的?

如果你能判断出来, 那么把你的判断方法写成代码.

如果你不能判断出来, 那赶快结贴吧, 节约点时间. --------------------编程问答-------------------- trim 函数去除空格
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,