哪个函数可以反转字符串
如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




