| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1000 人关注过本帖
标题:大家近来看看该怎么做!!
只看楼主 加入收藏
samichang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-8-22
收藏
 问题点数:0 回复次数:13 
大家近来看看该怎么做!!


读取c:\test.txt 数据并写入及生成 c:\out.txt文本

目的: 只提取RP和RPTWIN 有数据的行.提取数据为:RP值, RPTWIN值,及EM值,并当EM状态为AB,MB,CB时候提取!黑体部分为需要提取的数据!!!

c:\test.txt 内容如下:
<exemp:rp=all,em=all;

EM DATA

RP TYPE EM EQM TWIN CNTRL PP STATE
12 RP4L1A 0 CLT-0 13 PRIM CB
12 RP4L1A 1 CLT-1 13 PRIM CB
12 RP4L1A 2 CLT-2 13 SEC CB

13 RP4L1A 0 CLT-0 12 SEC CB
13 RP4L1A 1 CLT-1 12 SEC CB
13 RP4L1A 2 CLT-2 12 PRIM CB

32 RP4L1G 0 TSM-0 33 PRIM AB
32 RP4L1G 1 TSM-0 33 PRIM AB
32 RP4L1G 2 TSM-1 33 SEC MB
32 RP4L1G 3 TSM-1 33 SEC MB
32 RP4L1G 4 TSM-1 33 SEC WO
32 RP4L1G 10 TSM-5 33 SEC MB


33 RP4L1G 0 TSM-0 32 SEC AB
33 RP4L1G 1 TSM-0 32 SEC AB
33 RP4L1G 2 TSM-1 32 PRIM MB
33 RP4L1G 3 TSM-1 32 PRIM MB
33 RP4L1G 4 TSM-1 32 PRIM WO
33 RP4L1G 10 TSM-5 32 SEC MB


384 RP4S1A 8 ETMALT- 385 PRIM MB
384 RP4S1A 10 ASDS3-5120 385 PRIM MB

385 RP4S1A 8 ETMALT- 384 SEC MB
385 RP4S1A 10 ASDS3-5120 384 SEC MB

386 RPPS1 0 MIWUTS-320&&-335 PRIM CB

387 RPG2A 0 C7ST2C-320&&-323 PRIM MB
388 RPG3A 0 C7ST2C-324&&-327 PRIM CB

生成 c:\out.txt文本内容如下:

bleme:rp=12,rpt=13,em=0;
bleme:rp=12,rpt=13,em=1;
bleme:rp=12,rpt=13,em=2;
bleme:rp=32,rpt=33,em=0;
bleme:rp=32,rpt=33,em=1;
bleme:rp=32,rpt=33,em=2;
bleme:rp=32,rpt=33,em=3;
bleme:rp=32,rpt=33,em=10;

bleme:rp=384,rpt=385,em=8;
bleme:rp=384,rpt=385,em=10;

恳请高手帮忙解决啊!!!
谢谢!!!!!

搜索更多相关主题的帖子: 数据 
2006-08-22 14:52
XOoo
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-21
收藏
得分:0 

先lineinput
再循环用replace(," "," ")把多余的空格去掉
用split()把数据分割
分析得到的数组
........
没有了

2006-08-22 16:35
samichang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-8-22
收藏
得分:0 
哎~~偶是菜鸟啊~~能否写出来啊..怎么实现呀!~~
2006-08-22 17:07
XOoo
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-21
收藏
得分:0 

Dim TextLine As String
Dim arr() As String

Open "c:\test.txt" For Input As #1 ' 打开文件。
Open "c:\out.txt" For Output As #2
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量。
Do While Val(InStr(TextLine, " "))
TextLine = Replace(TextLine, " ", " ")
Loop
arr() = Split(TextLine)
'然后分析数组arr().如果符合要求,就把它写到文件#2中,这个不用我写了吧...
'还是写下,譬如:
'If Right(arr(7), 1) Like "B" Then
' TextLine = "bleme:rp=" & arr(1) .....
' Write #2, , TextLine
'End If
Loop
Close

很久没碰过vb了....辛苦啊..

2006-08-22 21:08
samichang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-8-22
收藏
得分:0 
谢谢楼上的兄台热心帮助啊!!!!
分析数组部分是最关键啦~~我就是会糊涂呀!~能否帮我再指导指导啊!!

谢谢!!
2006-08-23 08:08
XOoo
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-21
收藏
得分:0 

你按F8单步执行,并添加监视arr(),TextLine等(随你喜欢),记得打开监视窗口(view菜单下的watch window),观察变量数值的变化,再想想该怎样分析.

If Right(arr(7), 1) Like "B" Then '假定七号是判断的关键.Right(arr(7), 1) Like "B" 就是arr(7)=ab,mb或cb(原数据没有其它b了)
TextLine = "bleme:rp=" & arr(1) '.....这个是生成你输出的东西,应该会吧...用 & 符号砌出来的
Write #2, , TextLine
End If

2006-08-23 08:54
samichang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-8-22
收藏
得分:0 

谢谢!~兄台帮忙!~我还是很模糊~,因为还有重复的行,怎么不提取呢? 如:
32 RP4L1G 0 TSM-0 33 PRIM AB
33 RP4L1G 0 TSM-0 32 SEC AB !这行就是重复的!
能否举个例子啊!

如生成: bleme:rp=32,rpt=33,em=0;

太感谢谢啦~~

2006-08-23 12:19
XOoo
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-21
收藏
得分:0 
重复只是指数字重复?输出的文件不能有重复的行吗?
2006-08-23 12:26
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

有沒有考慮過將這個文件作爲一個 Text 的數據庫格式來存取

Microsoft Text Driver 這個驅動能很好支持文本格式的數據庫.


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-23 12:26
samichang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-8-22
收藏
得分:0 
以下是引用XOoo在2006-8-23 12:26:50的发言:
重复只是指数字重复?输出的文件不能有重复的行吗?

兄台:
提取数据是不能重复的,不然将产生这样的结果:

如: bleme:rp=32,rpt=33,em=0;
bleme:rp=33,rpt=32,em=0; 这个和上面的只是数据的位置交换了,但是一样的,属于重复啦~~如何屏蔽呢?.
能帮忙帮我做一下吗?
谢谢你!!!

[此贴子已经被作者于2006-8-23 13:56:50编辑过]

2006-08-23 13:39
快速回复:大家近来看看该怎么做!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025211 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved