CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

怎样在串中快速的取得第N到第N+1个*之间的字符子串----在线等待

楼主terrace(terrace)2003-11-01 12:14:57 在 Delphi / Windows SDK/API 提问

有一个string类型的变量,长度约几千,其值中包含多个'*',如:as11*aaa*qq*dff*zzz*5*,怎样快速的取得第N到第N+1个*之间的字符串呢? 问题点数:0、回复次数:4Top

1 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2003-11-01 12:25:01 得分 0

用   StrLCopy   就可!!!  
  function   StrLCopy(Dest:   PChar;   const   Source:   PChar;   MaxLen:   Cardinal):   PChar;Top

2 楼prettysky(浪际天涯)回复于 2003-11-01 15:32:26 得分 0

先取得*的位置,然后Copy两个*中间的字符。  
  去的*的位置可以用那个asin什么的函数。。记不清了。copy就用copy();Top

3 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2003-11-01 15:39:26 得分 0

如也可!   s   :=   Copy('as11*aaa*qq*dff*zzz*5*',   3,   3);Top

4 楼deanchang(鱼)回复于 2003-11-01 16:39:18 得分 0

除了二楼理解了楼主的意思,其他都是来混分的,今天心情较好,替楼主写个取第N个和第N+1个特殊符号(包括'*'号)之间字符的类,希望楼主和大家一起加油进步.  
  ================================================================================类  
  ...  
  Type  
      TGetStr   =   class  
      private  
          Stn_Pos,Len_Str:integer;PushedStr,PopStr:string;  
      public  
          function   GetString():string;//返第Stnp到Stnp+1个特殊符号之间的字符  
          procedure   PopString(PopS:string);//PopS是当处理完原字符串后,将字符串还原到哪  
          constructor   Create(Stnp:integer;SourceStr:string);  
                                    //构造函数,定义要从SourceStr中的第Stnp个特殊符号(包括*号)开始取数  
  end;  
  ...  
  =========================================================================实现+例程  
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Forms,Dialogs,StrUtils,   StdCtrls,   Classes,   Controls;  
   
  type  
      TForm1   =   class(TForm)  
          Button1:   TButton;  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
  type  
      TGetStr   =   class  
      private  
          Stn_Pos,Len_Str:integer;PushedStr,PopStr:string;  
      public  
          function   GetString():string;  
          procedure   PopString(PopS:string);  
          constructor   Create(Stnp:integer;SourceStr:string);  
      end;  
   
  var  
  Form1:   TForm1;  
   
  implementation  
  {$R   *.dfm}  
  constructor   TGetStr.Create(Stnp:integer;SourceStr:string);  
  begin  
  PushedStr:=SourceStr;  
  Len_Str:=Length(SourceStr);  
  Stn_Pos:=Stnp;  
  end;  
  function   TGetStr.GetString():string;  
  var  
  Position:integer;  
  begin  
      PopStr:=PushedStr;  
      Position:=Pos('*',PushedStr);  
      while   Position   >0   do  
          begin  
              Stn_Pos:=Stn_Pos-1;  
              PushedStr[Position]:='0';  
              if   Stn_Pos   =   0   then  
                  begin  
                  Result:=MidBStr(PushedStr,Position+1,Pos('*',PushedStr)-Position-1);  
                  Exit;  
                  end;  
              Position:=Pos('*',PushedStr);  
          end;  
  end;  
  procedure   TGetStr.PopString(PopS:string);  
  begin  
  Pops:=PopStr;  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
  TestStr:string;  
  ResultStr:string;  
  GetS:TGetStr;  
  begin  
  TestStr:='*4329*fjdslajfd*f98724rkjfdlksaj*jgdlf*gfd*fsda*';  
  GetS:=TgetStr.Create(3,TestStr);  
  ResultStr:=GetS.GetString();  
  GetS.PopString(TestStr);  
  GetS.Free;  
  showmessage(ResultStr);  
  end;  
   
  end.  
   
  事实上要实现该功能是很简单的,被我搞得这么复杂,是希望大家争做程序员,别做程序工人.  
  如果能完全理解上述程序的话,恭喜你,你程序设计算是入门汉了.  
   
  (PS:这只是个基础类,当且仅当你要处理的字符串全是英文字符时,如果你字符串里有中文字符的话,这个类需要改进才行,具体实现交给大家发挥了).Top

相关问题

  • 取字符串的子串???
  • 请问判断某字符串str1为另一字符串str2的子串的函数?(在线等待!)
  • JAVA求字符串的子串,谢谢!
  • 如何获取字符串的子串?
  • Pos函数的说明“在字符串中搜索子串”,请问什么是字符串的子串?
  • 如何在字符串的某个子串后面插入字符串?
  • 小问?从字符串中取子串的函数是什么?
  • 请问C#中的取字符串的子串呢?????
  • 怎样在asp中,取得某个字符串中的子串?
  • 如何将一个汉字作为2个字符取子串

关键词

  • 字符
  • stnp
  • 特殊符号
  • 字符串
  • 取得
  • pchar
  • 楼主
  • copy

得分解答快速导航

  • 帖主:terrace

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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