procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
S := '1四234三567一8二';
ShowMessage(Format('汉字:%d(个)', [Length(S) - Length(WideString(S))]));
ShowMessage(Format('英文:%d(个)', [Length(WideString(S)) - (Length(S) - Length(WideString(S)))]));
end;
var
S: string;
begin
S := '1四234三567一8二';
ShowMessage(Format('汉字:%d(个)', [Length(S) - Length(WideString(S))]));
ShowMessage(Format('英文:%d(个)', [Length(WideString(S)) - (Length(S) - Length(WideString(S)))]));
end;
sStr: String;begin
iEnglish := 0;
iChinese := 0;
for ii := 1 to Length(sStr) do
begin
if (ORD(sStr[ii]) >= 65) and (ORD(sStr[ii]) <= 122) then
Inc(iEnglish)
else
if (ORD(sStr[ii])>123 ) then //记不得汉字字符是从多少开始了!假设为123
Inc(iChinese);
end;
end;
汉字的是从大于127开始的。。 zswang(伴水)(* pascal→c *)
你的程序我怎么看不懂啊。
Error :
Error1 汉字字符起码大于128,实际要大于160
Error2:汉字是双字节,所以iChinese要除2,更好的方法是统计两个>160的字符连在一起
WideString:双字节字符串类型
MBCS:多字节字符系统
在 WideString 中一个汉字就被看成一个字符
Length(S) //得到全部字符个数
Length(WideString(S)) //得到MBCS字符个数//利用强制转换
两项相减当然就可以得到减少了多少个字符,也就是有多少个双字节字符在其中