如何将字符串中的某个字符变为小写???(50分)

  • 主题发起人 主题发起人 ifbn
  • 开始时间 开始时间
I

ifbn

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将字符串中的某个字符变为小写??? 我是各菜鸟,还请大家多多帮助!!谢谢
email:ifbn@8848.net
 
呵呵,刚写了一个过程,也许能解决你的问题。
function TForm1.ReplaceAll(AStr, AStrToReplace,
AReplaceStr: string): string;
var
Len, I: integer;
TmpStr, StrLeft: string;
begin
TmpStr := '';
StrLeft := AStr;
Len := length(AStrToReplace);
I := Pos(AStrToReplace, AStr);
while I <> 0do
begin
TmpStr := TmpStr + Copy(StrLeft, 1, I-1) + AReplaceStr;
StrLeft := Copy(StrLeft, I + Len , length(StrLeft) - I - Len + 1);
I := Pos(AStrToReplace, StrLeft);
if I = 0 then
TmpStr := TmpStr + StrLeft;
end;
Result := TmpStr;
end;

把要变成小写的字符用小写的替换就可以了,不过肯定不是最佳的解决方法,见笑了。
 
好久没有编程了, 今天难得看到一个简单一点的问题 ,好让我也拿点分吧。
function TForm1.UpcaseStr(Source: string;
C : Char): string;
var tmpStr : string;
i ,L: integer;
begin
tmpStr := Source;
i := 1;
L := Length(tmpStr);
while (i <= L ) and (tmpStr <> #0)do
begin
if (tmpStr = C ) then
tmpStr := UpCase(tmpStr);
Inc(i);
end;
Result := tmpStr;
end;
 
//呵呵检测字符不要我说了吧,我提供一个转换函数
function LoCase(const ch: char): char;
asm
{ -> AL Character }
{ <- AL Result }
CMP AL,'A'
JB @@exit
CMP AL,'Z'
JA @@exit
ADD AL,'a' - 'A'
@@exit:
end;
 
晕!
to ddev:
你把Delphi中的UpCase函数的源程序贴出来干嘛? 难道还要自己写一遍?
直接调用UpCase不行吗?
 
//楼上那位仁兄真是高见!哈哈
//下面是 UpCase 的源码,你可以对照一下
function UpCase(const ch: char): char;
asm
{ -> AL Character }
{ <- AL Result }
CMP AL,'a'
JB @@exit
CMP AL,'z'
JA @@exit
SUB AL,'a' - 'A'
@@exit:
end;

借用 Delphi 源码中算法是我一贯的做法,可靠、简单!如此而已。
 
function TForm1.UppToLow(Source: string;Psour:char): string;
var
i:integer;
begin
if (ord(psour)>96)and(ord(psour)<123) then
begin
result:='';
i:=pos(psour,source);
while i>0do
begin
result:=result+copy(source,1,i-1)+chr(ord(source)-32);
source:=copy(source,i+1,length(source)-i);
i:=pos(psour,source);
end;
result:=result+source;
end
else
result:=source;
end;
 
其实在汇编中转大小写并不是用减法的, 而是用and/or的,
比如:
mov ax, 6361H ;ac
and ax, DFDFH ;AC
or ax, 2020H ;ac
这样效率高
 
var i:char;
设i是 a-z或A-Z的字符。(重要前提)

则byte(i):=byte(i) or $20;使i诺原为小写则变为大写,诺为大写则保持不变。
同理 byte(i):=byte(i) xor $20;
使i诺原为大写则变为小写,诺为小写则保持不变。
 
都到这份上了还没有答案呢,还是里我们而去了?
 
串:s:=LowerCase(s)
某个字符:s:=LowerCase(s)
或者:s:= LowerCase(s)[1]
这才是Delphi
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部