| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 889 人关注过本帖
标题:请教,关于文本内容提取!
只看楼主 加入收藏
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
 问题点数:0 回复次数:8 
请教,关于文本内容提取!
文本内容:

STA004588765510 表示通配 000044443
请输入通配STA004333365510 通配件输入 01114467
配号通配STA004333365510 配件 66657777

请问我现在用Text以行的方式读入以上文本内容,但是我怎样提取STA***********及通配后的8位数字呢?

我现在已经实现了提取STA***********的代码了,但是具体怎样提取后面的8位数字,还请各位指教。
注:代码的长度都是固定的,STA*****带数字是15位,后面的是8位。

我的提取STA*******的方法如下:
var
TextFileVar:TextFile;
T,S:integer;
i,Z:string;
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.Clear;
AssignFile(TextFileVar,OpenDialog1.FileName);
Reset(TextFileVar);
try
While Not Eof(TextFileVar) do
begin
Readln(TextFileVar,i);
T:=pos('S',i);
if T>0 then
begin
for S:=T to T+15 do
begin
Z:=Z+i[S];
end;
Memo1.Lines.Add(Z);
Z:='';
end;
end;
finally
CloseFile(TextFileVar);
end;
end;
end;

[此贴子已经被作者于2007-3-15 16:54:20编辑过]

搜索更多相关主题的帖子: 文本 
2007-03-15 13:56
fuliping
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2006-11-20
收藏
得分:0 
不好意思~~我进来踩一踩才发现自己火星鸟~~
本来看题目以为自己会的,一进来才发现自己实在是菜得可以!~~~

不疯不魔不成活
2007-03-15 15:01
stars_chen
Rank: 1
等 级:新手上路
威 望:1
帖 子:45
专家分:0
注 册:2006-11-15
收藏
得分:0 

vStr := 'STA***********';
vStr := Copy(vStr, 8, 8);


2007-03-15 16:23
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
stars_chen 好像直接用COPY函数不好弄吧?因为位置都不固定的,有可能会是在STA这个字符串的后10位,而且中间的字符空格可能是2个,所以如果直接提取的话可能用COPY不太好弄,如果第一个字符串用COPY来提取应该会比我的方法简单和效果会高很多,这个是真的。看样子我要考虑重新换一下代码。

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-03-15 16:53
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
以下是引用fuliping在2007-3-15 15:01:09的发言:
不好意思~~我进来踩一踩才发现自己火星鸟~~
本来看题目以为自己会的,一进来才发现自己实在是菜得可以!~~~

大家都是学习的嘛,我以前是学ASP的,这段时间刚刚开始学DELPHI的…………不过感觉DELPHI入门还算比较容易,不过我以前有学过PASCAL,我二级证就是用PASCAL过的,而且个人感觉PASCAL比较严谨一些,最少比C和BASIC好,C经常指针会崩溃,BASIC的话…………这个没什么可比性,不说也罢……


浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-03-15 16:57
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 
STA*********代码你可以了,我就不说了
说一下你的取后面的通配数字获取吧!

可以试一下

Copy(vStr, Length(i) - 8, Length(i));

大家都是朋友,有空就来坐坐!
2007-03-17 16:33
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
我知道你的意思,你是说直接从后部向前截取,问题就在于不知道后半部份是否是数字,如果后面的数字不在后8位呢?

配号通配STA004333365510 配件 66657777 今天配送,单号003

现在只知道两个东东,就是第一条的字符串是一个15位数的字符串,然后第二个是一个连续数字的字符串,并且除了第一个字符串外就是第二个串的字符中是连续数字,我现在正在考虑是否能用ASCII来对这8位数进行对比,如果是连续数字超过4位数的就截取(在这里所有的字符串中没有超过4位连续数字的字符串,除了第一条代码和后面的这8位数字。)目前只有一个想法就是在第一条字符串截取以后先用DELTREE的涵数把前面代码全删除掉,然后再用字符数组的方式进行对比。

不过具体的语句我还没写,我个人感觉这样弄起来的话太繁琐了,如果可以有更好的方法就好了。还请大家帮忙啊,谢谢了。

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-03-17 18:04
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 

其实就是一个找规律的问题!
你看你提问题时候,我对照你一开始的问题是这样想的。
所以问问题时候,不要让别人产生误解!
白白浪费别人的时间!

如果是那样的话,只有靠数字是第二个连续数字的规律话,那就只能用ASCII来判断(根据以往的经验)。

另外我看到的就是空格符这个规律,(你也考虑这个规律,都是第二个空格后面的数字)
不知道你提的问题又有没有变化!
千变万变也来不及楼主对题目进行叙述的不准确!


大家都是朋友,有空就来坐坐!
2007-03-18 11:05
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
恩,不好意思,在当问的时候确实没有考虑到这么多,先对版主说声对不起。我观查了这几天到我这的表,应该只能按ASCII来判断,不过现在倒有一个比较好的方法,看了整个月的表上的数据,发现在第一个字串:STA*****,后面虽然中间的字符不确定,不过有一点那就是一般不会存在数字,现在我只要把第一段提出来以后把前半段DELTREE掉,然后再就直接做字符串启遍历,对比第一个出现数字的地方就直接截取8位就可以了,希望以后的表的格式不要变了。再次感谢版主及各位论坛的朋友。

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-03-18 23:03
快速回复:请教,关于文本内容提取!
数据加载中...
 
   



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

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