delphi中如何替换一个字符串中的指定字符串?(50分)

  • 主题发起人 主题发起人 foreveryouth
  • 开始时间 开始时间
F

foreveryouth

Unregistered / Unconfirmed
GUEST, unregistred user!
rt.谢谢!!!
 
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
 
函数“StringReplace”
 
while pos(StringToConvert,' ')>=0 do
StringToConvert:=StringReplace(StringToConvert,' ',' ',[rfReplaceAll]);
怎么一执行就死掉?想将一个字符串的多个空格全变成单个空格。
用正则表达式如何写?
谢谢!!!
 
同意各位的见解!
 
画蛇添足!
如下:
s:='sdasd asdasdasd asdasdasd asdasdasd asdad';
S:=StringReplace(S,' ',' ',[rfReplaceAll]);
showmessage(s);
 
while pos(' ',StringToConvert)>0 do
StringToConvert:=StringReplace(StringToConvert,' ',' ',[rfReplaceAll]);

你的POS函数使用不正确!
 
linsb:你说的不对!
siyan:这不是死掉的原因!
 
to foreveryouth
我说的怎么不对,去掉while pos(StringToConvert,' ')>=0 do语句就是你要的结果!
加了错误的语句不是画蛇添足吗?
>>while pos(StringToConvert,' ')>=0 do
死循环!!
 
是你的stringtoconvert太大了,机器处理慢,照成机器假死机,如果替换小的串,应该没问题
 
死循环!!while pos(StringToConvert,' ')>=0 总为true!
 
一个小问题,怎么全都是杀鸡用牛刀。
用StringReplace已经解决了,还用什么pos
 
同意各位的观点!我没有什么好说的拉
 
对呀,这样的替换使字符串中总有一个空格, 当然会是死循环了.
 
我的意思是一个字符串中有三个连续的空格,也要将它替换成一个空格。
显然
s:='sdasd asdasdasd asdasdasd asdasdasd asdad';
S:=StringReplace(S,' ',' ',[rfReplaceAll]);
showmessage(s);
只能替换两个空格的情况。所以我加了
while pos(' ',StringToConvert)>0 do
StringToConvert:=StringReplace(StringToConvert,' ',' ',[rfReplaceAll]);
却无法运行。

如何做呢?
 
S:=StringReplace(S,#32#32#32,#32,[rfReplaceAll]);
这样应该可以了吧,
 
s:='delphi bcb motorola nokia cmcc';
while pos(' ',s)>0 do
s:=StringReplace(s,' ',' ',[rfReplaceALL]);
运行以上代码后,s='delphi bcb motorola nokia cmcc'
亲身体验,没错。
 
什么啊????????????????哈哈
 
使用正则表达式。
 
后退
顶部