CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

哪个函数可以反转字符串

楼主yangchuzi(八面玲珑)2003-09-03 18:35:14 在 Delphi / VCL组件开发及应用 提问

如s:='abc'  
  想变成s:='cba'  
  因为字符串很长,将近1200个字符,所以无法每个字符转,有没有一次性的函数 问题点数:20、回复次数:12Top

1 楼Manwill71(天皇地虎江山一片)回复于 2003-09-03 18:41:49 得分 1

自己写一个吧  
  function   Convert_V(S   :string   ):string     ;  
  var   i   :   integer   ;  
  begin  
      if   length(trim(S))=0   then  
      begin  
          Result   :=   S;  
          Exit   ;  
      end   ;  
        Result   :=   ''   ;  
      for     i   :=     (length(s)   )   downto   0   do  
      begin  
          Result   :=   Result   +   s[i];  
      end   ;  
  end   ;Top

2 楼lonely258(漫不经心)回复于 2003-09-03 18:42:15 得分 1

用for吧,传进来个s,传出去个反过来的s  
   
  CString   strTmp:="";  
  ll:Integer;  
  ll:=length(s)  
  for   i:=0   to   ll-1   do  
      begin  
          strTmp   :=   strTmp+s[ll-i-1];  
      end;  
  result   :=   strTmp;Top

3 楼Manwill71(天皇地虎江山一片)回复于 2003-09-03 18:42:30 得分 1

自己写一个吧  
  function   Convert_V(S   :string   ):string     ;  
  var   i   :   integer   ;  
  begin  
      if   length(trim(S))=0   then  
      begin  
          Result   :=   S;  
          Exit   ;  
      end   ;  
        Result   :=   ''   ;  
      for     i   :=     (length(s)   )   downto   0   do  
      begin  
          Result   :=   Result   +   s[i];  
      end   ;  
  end   ;Top

4 楼baguli(巴古里)回复于 2003-09-03 18:54:32 得分 2

给你写了个API   ReverseStr:  
  procedure   StrReverse(P:   PChar);  
  var  
      E:   PChar;  
      c:   Char;  
  begin  
      if   StrLen(P)   >   1   then  
      begin  
          E   :=   P;  
          Inc(E,   StrLen(P)   -   1);                     //   E   ->   last   char   in   P  
          repeat  
              c   :=   P^;                                             //   store   beginning   char   in   temp  
              P^   :=   E^;                                           //   store   end   char   in   beginning  
              E^   :=   c;                                             //   store   temp   char   in   end  
              Inc(P);                                               //   increment   beginning  
              Dec(E);                                               //   decrement   end  
          until   Abs(Integer(P)   -   Integer(E))   <=   1;  
      end;  
  end;  
   
  function   ReverseStr(const   S:   string):   string;  
  begin  
      Result   :=   S;  
      StrReverse(PChar(Result));  
  end;  
  Top

5 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2003-09-03 18:58:36 得分 0

我写的,效率不错.  
   
  procedure   ReverseStr(const   s:string);  
  var   i,n:integer;iLen:integer;  
  begin  
    iLen:=Length(s)  
    for   i:=1   to   iLen   div   2   do  
    begin  
          n:=iLen-i;  
          s[i]:=s[i]   xor   s[n];  
          s[n]:=s[i]   xor   s[n];  
          s[i]:=s[i]   xor   s[n];  
    end;  
  end;  
  Top

6 楼zhoutian618(秦失其鹿,天下共逐,唯胜者得鹿而割之)回复于 2003-09-03 19:21:36 得分 0

UPTop

7 楼franne(沖天笑)回复于 2003-09-03 19:36:54 得分 0

只能自己写个转换函数了,好象没有自带API函数,SQL   SERVER   里有个reverse可以转换Top

8 楼frogshero(头疼)回复于 2003-09-03 19:41:58 得分 0

Eastunfail(浴血雏龙)==(恶鱼杀手)   寫的不能運行啊?誰再解釋一下?俺菜Top

9 楼Drate(小虫(好好学习,天天向上))回复于 2003-09-03 19:52:04 得分 0

反转字符串          
           
  function   ReverseString1(const   s:   string):   string;  
   
  var  
   
  i,   len:   Integer;  
   
  begin  
   
  len   :=   Length(s);  
   
  SetLength(Result,   len);  
   
  for   i   :=   len   downto   1   do  
   
  begin  
   
  Result[len   -   i   +   1]   :=   s[i];  
   
  end;  
   
  end;  
   
  function   ReverseString2(const   Str:   string):   string;  
   
  //   by   Ido   Kanner  
   
  var  
   
  ch:   Char;  
   
  i,   Size:   Integer;  
   
  begin  
   
  Result   :=   Str;  
   
  Size   :=   Length(Result);  
   
  if   (Size   >=   2)   then  
   
  //   2   or   more   chars  
   
  begin  
   
  //   For   1   to   middle   of   the   string  
   
  for   i   :=   1   to   (Size   div   2)   do  
   
  begin  
   
  //   Lets   get   the   charecter   of   the   current   place   in   the   string  
   
  ch   :=   Result[i];  
   
  //   Place   the   Current   pos   of   the   char  
   
  //   with   the   char   of   it's   mirror   place...  
   
  Result[i]   :=   Result[Size   -   (i   -   1)];  
   
  //   In   the   mirror   place   we   will   put   char   of   the  
   
  //   Original   place...   And   we   switched   places   !!!  
   
  Result[Size   -   (i   -   1)]   :=   ch;  
   
  end  
   
  end;  
   
  end;  
   
     
   
  function   ReverseString3(S:   string):   string;  
   
  //   by   Rudy   Velthuis  
   
  var  
   
  P,   Q:   PChar;  
   
  C:   Char;  
   
  begin  
   
  Result   :=   S;  
   
  if   Length(Result)   =   0   then   Exit;  
   
  P   :=   PChar(Result);  
   
  Q   :=   P   +   Length(Result)   -   1;  
   
  while   P   <   Q   do  
   
  begin  
   
  C   :=   P^;  
   
  P^   :=   Q^;  
   
  Q^   :=   C;  
   
  Inc(P);  
   
  Dec(Q);  
   
  end;  
   
  end;  
   
  procedure   ReverseString4(var   S:   string);  
   
  //   by   Rudy   Velthuis  
   
  var  
   
  P,   Q:   PChar;  
   
  C:   Char;  
   
  begin  
   
  if   Length(S)   =   0   then   Exit;  
   
  P   :=   PChar(S);  
   
  Q   :=   P   +   Length(S)   -   1;  
   
  while   P   <   Q   do  
   
  begin  
   
  C   :=   P^;  
   
  P^   :=   Q^;  
   
  Q^   :=   C;  
   
  Inc(P);  
   
  Dec(Q);  
   
  end;  
   
  end;  
     
     
  ----From   "Delphi   tips"Top

10 楼GinoXi(晴空一鹤)回复于 2003-09-03 20:00:50 得分 0

直接就有这个函数。不用自己写Top

11 楼bxh2dai(希望明天会有些改变)回复于 2003-09-03 20:05:23 得分 5

呵呵,来晚了啊,给你一个好用的  
  首部   function   ReverseString(const   AText:   string):   string;   $[StrUtils.pas  
  功能   返回字符串AText的反序  
  说明   ReverseString('1234')   =   '4321'  
  参考   function   System.SetLength  
  例子   Edit3.Text   :=   ReverseString(Edit1.Text);  
  就用这个函数,轻松搞顶~!Top

12 楼ychuiming(飞天)回复于 2003-09-03 20:30:21 得分 0

studyTop

13 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2003-09-03 21:12:00 得分 10

我的算法修改了(上次的是随手写的没有测试),可以用了。使用ReverseString需要分配额外的内存。如果你做的系统需要很高的效率,那么就用这个:  
  procedure   ReverseStr(var   s:string);  
  var   i,iLen,n:integer;  
  begin  
          iLen:=length(s);  
          for   i:=1   to   Trunc(iLen   /   2)   do  
          begin  
                  n:=iLen-i+1;  
                  s[i]:=Char(Ord(s[i])   xor   Ord(s[n]));  
                  s[n]:=Char(Ord(s[i])   xor   Ord(s[n]));  
                  s[i]:=Char(Ord(s[i])   xor   Ord(s[n]));  
          end;  
  end;Top

相关问题

  • 字符串函数?
  • 字符串函数
  • 把数字转换成字符串的函数是哪个?
  • 查找字符串A是否在串B中用哪个函数
  • 有哪个函数能把字符串转化成 int?
  • CB中:哪个函数可转化字符串“FF”为255。
  • **用哪个函数截取字符串的一部分?**
  • 将字符串转换成整数用哪个函数来的?
  • javascript中替换字符串用哪个函数?
  • asp中取字符串的第几位用哪个函数

关键词

  • strtmp
  • beginning
  • ll
  • result
  • length
  • integer
  • then
  • var
  • char

得分解答快速导航

  • 帖主:yangchuzi
  • Manwill71
  • lonely258
  • Manwill71
  • baguli
  • bxh2dai
  • Eastunfail

相关链接

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

广告也精彩

反馈

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