CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

循环语句求教!!!字符串提取求教!!!谢谢!!!

楼主AHBC123()2003-03-01 19:25:26 在 VB / 基础类 提问

循环语句求教!!!  
  以下代码是在aaa.txt中查找“如果是第2行就打印出来“字符串,如果找到,就分别读取这行以下的(以下第2行单独读取)6,8,10,12,14,16,18,20,22,24十行字符串,请帮助把一下代码改写成循环语句(我的代码太麻烦),谢谢!!!  
  Dim   lngLine,   kk   As   Long  
  Dim   strLine   As   String  
   
          Open   "C:\aaa.txt"   For   Input   As   #1  
                  Do   Until   EOF(1)  
                          lngLine   =   lngLine   +   1   '记数  
                          Line   Input   #1,   strLine   '一行一行地读  
                          If   Trim(strLine)   =   "如果是第2行就打印出来"   Then       '如果是第2行就打印出来  
                            Open   "C:\aaa.txt"   For   Input   As   #2  
                  Do   Until   EOF(2)  
                          kk   =   kk   +   1   '记数  
                          Line   Input   #2,   strLine   '一行一行地读  
                          If   kk   =   lngLine   +   2   Then  
                          MsgBox   strLine  
                             
                          End   If  
                          If   kk   =   lngLine   +   6   Then  
                          MsgBox   strLine  
                           
                          End   If  
                          If   kk   =   lngLine   +   8   Then  
                          MsgBox   strLine  
                          End   If  
                          If   kk   =   lngLine   +   10   Then  
                          MsgBox   strLine  
                                 
                          End   If  
                          If   kk   =   lngLine   +   12   Then  
                          MsgBox   strLine  
                             
                          End   If  
                          If   kk   =   lngLine   +   14   Then  
                          MsgBox   strLine  
                                           
                          End   If  
                          If   kk   =   lngLine   +   16   Then  
                          MsgBox   strLine  
                             
                          End   If  
                          If   kk   =   lngLine   +   18   Then  
                          MsgBox   strLine  
                       
                          End   If  
                          If   kk   =   lngLine   +   20   Then  
                          MsgBox   strLine  
                             
                          End   If  
                          If   kk   =   lngLine   +   22   Then  
                          MsgBox   strLine  
                             
                          End   If  
                          If   kk   =   lngLine   +   24   Then  
                          MsgBox   strLine  
                                 
                          End   If  
                 
                  Loop  
          Close   #2   '关闭打开的文件  
         
                          End   If  
                  Loop  
          Close   #1   '关闭打开的文件  
           
           
   
  字符串提取求教!!!谢谢!!!  
  有字符串:  
  “对不起               系统未检测到                       123654“  
  想提取:  
  aaa=对不起  
  bbb=系统未检测到  
  ccc=123654 问题点数:60、回复次数:9Top

1 楼czjw(寒雪)回复于 2003-03-01 20:06:54 得分 55

还没有解决啊,我给你的代码不能用吗?我再贴一遍给你看!  
  Dim   filetxt   As   String,   x   As   Variant,   i   As   Integer,   Lines   As   Integer  
          Txtfile   =   "文本文件"  
          filetxt   =   String(FileLen(Txtfile),   "   ")  
          Open   Txtfile   For   Binary   As   1  
          Get   #1,   ,   filetxt  
          Close   1  
          x   =   Split(filetxt,   vbCrLf)                     '得到一个x()数组,每一个x元素是一行文本  
          Lines   =   UBound(x)                                       '得出文本总行数,从x(0)开始,最后一行是空行  
   
          For   i   =   0   To   Lines   -   1  
                  '开始查找你的起始行得到变量s  
                  If   InStr(x(i),   "指定字符")   >   0   Then  
                          s   =   i   +   1                                       '当某一行包含指定字符时,将行数赋值给   s  
                          Exit   For                                         '退出循环  
                  End   If  
          '…………  
          Next  
          For   i   =   s   To   lins   -   s  
                  '开始处理  
          i   =   i   +   1                     '增加一个隔行  
          Next  
   
  2、要提取的字符串是固定宽度的字段吗?Top

2 楼czjw(寒雪)回复于 2003-03-01 20:16:03 得分 0

这样吧,你把要处理的文本给我,我做好了一并发给你。  
  我的email:czjw@china.comTop

3 楼qixg(⊙∠⊙)回复于 2003-03-01 23:40:01 得分 5

可以搞得简单一点:  
          Dim   intRead   As   Integer  
          intRead   =   0  
          Dim   boolFind   As   Boolean  
          boolFind   =   False  
           
          Open   "C:\aaa.txt"   For   Input   As   #1  
                  Do   Until   EOF(1)  
                          lngLine   =   lngLine   +   1   '记数  
                          Line   Input   #1,   strline   '一行一行地读  
                          If   Trim(strline)   =   "如果是第2行就打印出来"   Then       '如果是第2行就打印出来  
                                  boolFind   =   True  
                                  intRead   =   lngLine   +   6  
                          End   If  
                           
                          If   boolFind   And   lngLine   =   intRead   Then  
                                  intRead   =   lngLine   +   2  
                                  MsgBox   strline  
                          End   If  
                  Loop  
          Close   #1   '关闭打开的文件Top

4 楼JennyVenus()回复于 2003-03-01 23:45:02 得分 0

instr函数查找Top

5 楼AHBC123()回复于 2003-03-02 09:57:30 得分 0

to   czjw(寒雪):  
  信以发送给您,请您多多帮助,谢谢!!!!  
  要提取的字符串不是固定宽度的字段  
  to   qixg(⊙∠⊙)   :  
  请教您如我想加个判断:即当循环到intRead   =   lngLine   +   26后,就退出,请教该如何写,我试了多次,不行,请教您,谢谢!!!!Top

6 楼fbmsf(FBM)回复于 2003-03-02 20:06:48 得分 0

把aaa.txt的内容读入一个字符串,在用instrTop

7 楼AHBC123()回复于 2003-03-02 21:14:43 得分 0

 
   
   
  谢谢!!!请告之instr如何用,给个例子!!!Top

8 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2003-03-02 21:18:15 得分 0

 
  InStr   函数  
               
   
  返回   Variant   (Long),指定一字符串在另一字符串中最先出现的位置。  
   
  语法    
   
  InStr([start,   ]string1,   string2[,   compare])  
   
  InStr   函数的语法具有下面的参数:  
   
  部分   说明    
  start   可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果   start   包含   Null,将发生错误。如果指定了   compare   参数,则一定要有   start   参数。    
  string1   必要参数。接受搜索的字符串表达式。    
  string2   必要参数。被搜索的字符串表达式。    
  Compare   可选参数。指定字符串比较。如果   compare   是   Null,将发生错误。如果省略   compare,Option   Compare   的设置将决定比较的类型。    
   
   
  设置  
   
    compare   参数设置为:  
   
  常数   值   描述    
  vbUseCompareOption   -1   使用Option   Compare   语句设置执行一个比较。    
  vbBinaryCompare   0   执行一个二进制比较。    
  vbTextCompare   1   执行一个按照原文的比较。    
  vbDatabaseCompare   2   仅适用于Microsoft   Access,执行一个基于数据库中信息的比较。    
   
   
  返回值  
   
  如果   InStr返回    
  string1   为零长度   0    
  string1   为   Null   Null    
  string2   为零长度   Start    
  string2   为   Null   Null    
  string2   找不到   0    
  在   string1   中找到string2     找到的位置    
  start   >   string2   0    
   
   
  说明  
   
  InStrB   函数作用于包含在字符串中的字节数据。所以   InStrB   返回的是字节位置,而不是字符位置。  
   
   
   
   
   
   
   
   
   
   
  InStr   函数示例  
  本示例使用   InStr   函数来查找某字符串在另一个字符串中首次出现的位置。  
   
  Dim   SearchString,   SearchChar,   MyPos  
  SearchString   ="XXpXXpXXPXXP"       '   被搜索的字符串。  
  SearchChar   =   "P"       '   要查找字符串   "P"。  
   
  '   从第四个字符开始,以文本比较的方式找起。返回值为   6(小写   p)。  
  '   小写   p   和大写   P   在文本比较下是一样的。  
  MyPos   =   Instr(4,   SearchString,   SearchChar,   1)        
   
  '   从第一个字符开使,以二进制比较的方式找起。返回值为   9(大写   P)。  
  '   小写   p   和大写   P   在二进制比较下是不一样的。  
  MyPos   =   Instr(1,   SearchString,   SearchChar,   0)  
   
  '   缺省的比对方式为二进制比较(最后一个参数可省略)。  
  MyPos   =   Instr(SearchString,   SearchChar)       '   返回   9。  
   
  MyPos   =   Instr(1,   SearchString,   "W")       '   返回   0。  
   
  Top

9 楼qixg(⊙∠⊙)回复于 2003-03-06 01:19:43 得分 0

Dim   intRead   As   Integer  
          intRead   =   0  
          Dim   intOut   As   Integer     '判断  
          intOut=0  
          Dim   boolFind   As   Boolean  
          boolFind   =   False  
           
          Open   "C:\aaa.txt"   For   Input   As   #1  
                  Do   While   (Not   EOF(1))   and   (intOut<26)  
                          lngLine   =   lngLine   +   1   '记数  
                          Line   Input   #1,   strline   '一行一行地读  
                          If   Trim(strline)   =   "如果是第2行就打印出来"   Then       '如果是第2行就打印出来  
                                  boolFind   =   True  
                                  intRead   =   lngLine   +   6  
  intOut   =   intOut   +   6  
                          End   If  
                           
                          If   boolFind   And   lngLine   =   intRead   Then  
                                  intRead   =   lngLine   +   2  
  intOut   =   intOut   +   2  
                                  MsgBox   strline  
                          End   If  
                  Loop  
          Close   #1   '关闭打开的文件Top

相关问题

  • 怎样提取指定字符串?(T-SQL语句)
  • 提取字符串
  • 提取字符串
  • 字符串提取问题
  • 怎样提取字符串?
  • 怎样提取字符串?
  • 提取字符串问题?
  • 怎样在pb中执行字符串(sql语句字符串)
  • Sql 语句字符串排序问题
  • sql语句连接字符串问题

关键词

  • 语句
  • 循环
  • 代码
  • 打印
  • lngline+
  • 求教
  • 字符串
  • 循环语句
  • strline
  • 一行

得分解答快速导航

  • 帖主:AHBC123
  • czjw
  • qixg

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo