请问在DELPHI下如何实现:
比如我现在有字符串:S1,S2
S1,S2都是汉字,如何实现如果S1中的汉字在S2中不存在则把此汉字取出写到一个A.txt文件中如:S1:=‘我是一名程序员’;S2:=‘我是一名高级和序员’;则程序运行结果为:‘高级’注:也许S1,S2中有不是汉字,所以在比较时应先做一个检测,谢谢~~
比如我现在有字符串:S1,S2
S1,S2都是汉字,如何实现如果S1中的汉字在S2中不存在则把此汉字取出写到一个A.txt文件中如:S1:=‘我是一名程序员’;S2:=‘我是一名高级和序员’;则程序运行结果为:‘高级’注:也许S1,S2中有不是汉字,所以在比较时应先做一个检测,谢谢~~
比如
var s:string;
SetLength(S,5);
s[1] :=Char(189);
s[2] :=char(211);
s[3] :=char(183);
s[4] :=char(214);
s[5] :=char(0);
Edit1.Text :=s;以上的字符将是“接分”。
S2 := '接分的是我来得目的';
结果是啥?第一天,他们给我注册超靓id,我没灌!
第二天,他们威胁要把我的电脑黑了,我没灌!
第三天,他们找了一个plmm和我聊天,我灌了!
第四天,我还想灌,可论坛被查封了!
嘻嘻嘻 伴水:)有屎以来最尾大的灌水夹 嘻嘻嘻嘻
若a.txt文件中的汉字在b.txt文件中不存在的汉字则写到一个新的TXT文件中、望高手给出宝贵意见,谢谢
var
i,j : Integer;
s1,s2,s3 : WideString;
bExists : Boolean;
begin
s1 := Memo1.Lines.Text;
s2 := Memo2.Lines.Text;
for i:=1 to Length(s2) do
begin
//西文ASCII字符是一个字节,高位必然为0
//中文字符是两个字节
if Hi(Ord(s2[i]))>0 then
begin
bExists := False;
for j:=1 to Length(s1) do
begin
if (Hi(Ord(s1[j]))>0) and (s1[j]=s2[i]) then
begin
bExists := True;
Break;
end;
end;
if not bExists then
s3 := s3+ s2[i];
end;
end;
Memo3.Text := s3;
end;
var
s1,s2,tmps,mys:WideString;
len,i:Integer;
begin
mys:='';
s1:='我是中国人';
s2:='中国真伟大';
len:=Length(s1);
for i:=1 to len do
begin
tmps:=s1[i];
if Pos(tmps,s2)=0 then
mys:=mys+tmps;
end;
Edit1.Text:=mys;
end;
执行后结果:我是人
如比较c:\1.txt 和 c:\2.txt
fc c:\1.txt c:\2.txt >c:\tmp.txt
tmp.txt中就是比较结果
用系统命令FC也得不出所要的结果
初学者,凑个热闹
拿个 小分!
呵呵
!!!
begin
i := length(s1);
j := length(s2);
for i := 0 to i do
for j := 0 to j do
if s1[i] <> s[j] then
s := s + s[i];
一个汉字他有高低位组成,比如:有S1:=我是一名程序员,S2:=我是一名大学生
POS(S1,S2)
结果为:程序员
来个假如,如果“员”的高低位为:001002;
“学”的高低位为:008001,“生”的高低位为:002000
则“学生”组成的位为:008-----001002-------000
001002正好是员字的高低位,所以上面的结果就会变成:程序,从而导致结果不正确不知这样分析有没有道理,继续讨论。。
一个汉字使用2个字节,一个西文字母使用一个字节存放,
在string里,length()返回的字符串字节数,如果有汉字,会认为一个汉字是2个字符。
在widestring里,Length()返回的是实际字符串个数。
因此,对于中西文混合的字符串,最好用widestring保存,这样取字符时,如果是西文,则取1个字节,如果是汉字则取2个字节。2、判断字符是否汉字
取出每个字符后,用Ord()可以得到每个字符的内码值,
可以用取高位值的办法判断是否是汉字。
凡是2个字节存放的,都是汉字,用一个字节存放的,都是西文,
因此用hi()检查字符高位值时,2个字节的字符高位都不为0,一个字节的字符,高位必然为0还可以用string,根据汉字编码规范逐个字节进行判断汉字。
汉字编码范围名称 第一字节 第二字节
GB2312 0xB0-0xF7(176-247) 0xA0-0xFE(160-254)
GBK 0x81-0xFE(129-254) 0x40-0xFE(64-254)
Big5 0x81-0xFE(129-255) 0x40-0x7E(64-126)
0xA1-0xFE(161-254)
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(Pos('好', '你好'))); //3
ShowMessage(IntToStr(Pos(WideString('好'), WideString('你好')))); //2
end;
我给的代码你调试过没有?调试过\发现什么错误再说话