你知不知到怎么样才能去除一字符串中的所有空格如:“ A B C ”变为“ABC”?(100分)

  • 主题发起人 主题发起人 geyufly
  • 开始时间 开始时间
G

geyufly

Unregistered / Unconfirmed
GUEST, unregistred user!
你知不知到怎么样才能去除一字符串中的所有空格如:“ A B C ”变为“ABC”?
 
var
s: string;
begin
s :=stringreplace(' a b c', ' ','',[rfReplaceAll]);
showmessage(s);
end;
 
来迟了,当然还有别的方法,一个一个读出来加到另一个字符串里.关键看你对速度有没有
要求,如果有特别的速度要求,就还要想别的方法.
 
s:=' a b c';
i:=pos(' ',s);
while i<>0 do
begin
delete(s,i,1);
i:=pos(' ',s);
end;
 
proman就别为了抢分而出馊主意了
adnil的就是最好的了
 
如果要速度快的话可以这样
var
i: integer;
iCount: integer;
sIn: string;
sOut: string;
begin
sIn := ' asdf asd fdsf dfdf df';
SetLength(sOut, Length(sIn));
iCount := 0;
for i := 1 to Length(sIn) do
if sIn <> ' ' then
begin
Inc(iCount);
sOut[iCount] := sIn;
end;
SetLength(sOut, iCount);
ShowMessage(sOut);
end;

呵呵!
 
也试一试这个,当然没有楼上的用指针的快,不过字符串可以大于256字节。你可以类似这样
的替换一篇文章,当然文章的长度不能超过string的范围。
var
str : string;
i : integer;
begin
str := edit1.Text; //赋值的字符串
i:=pos(' ',str);
while i <> 0 do
begin
str:=copy(str,1,i-1)+copy(str,i+1,length(str));
i:=pos(' ',str);
end;
showmessage(str);
end;
 
同意大家的。
 
var
s: string;
begin
s :=stringreplace(' a b c', ' ','',[rfReplaceAll]);
showmessage(s);
end;
 
不是这样,Delphi的这些字符串函数有些还是比较慢的.我曾经用在一段函数中大量使用了
Pos函数,然后截断字符串,进行一个文本格式的转换,可是换了其它的处理方式后速度提高
了10倍都不止,现在我还在想更好的方法,直接进行内存扫描.学无止境啊.具体情况要
看你的需求了.
 
FastReplace,呵呵,看看我以前的一个问题。比StringReplace快。
 
如果要用内存扫描的话,可以用指针,
static char *skipspace(const char *p)
{
while(isspace(*p))p++;
return (char *)p;
}
isspace是标准过程
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部