有请高手,我有一个字符串里有汉字又有数字,我想知道怎么算出多少个汉字,多少个数字???(200)

  • 主题发起人 主题发起人 wanglong0
  • 开始时间 开始时间
W

wanglong0

Unregistered / Unconfirmed
GUEST, unregistred user!
有请高手,我的一个memo1控件里里有汉字又有数字,我想知道怎么算出多少个汉字,多少个数字??比如:兴10-10-021井位于辽宁省盘锦市兴隆台渤海乡乔家村西偏南约600m。或者这么问也行,假如最开始焦点处于最前方,如果移动到最后,需要移动多少次光标呢??或者说memo1双字节和单字节的和是多少呢?
 
做个所有字符循环,ord(tmpStr[iCount+1])>128 //字符是汉字Str[i+1] in ['0', '9'] //字符是数字 符合条件的计数加一,就知道有多少汉字和数字了.
 
数字还有个好方法.将'0'到'9'全替换为'',之前的字符数减去之后的字符数(length),就是多少个数字了.
 
送佛送上西,以下代码是决对正确的,给满分!procedure TForm1.Button2Click(Sender: TObject);varCharacter,i:integer;Str:string;begini:=1;Character:=0;//Str:=Memo1.lines.text;Str:=Memo1.text;If Length(Str)>0 ThenRepeatif(ord(Str)>=129) and (ord(Str)<=254 )and (ord(Str[i+1])>=64) and (ord(Str[i+1])<=254)then //这个关键是将全角符号等非汉字也除去.楼主要给满分啦!Begin If (ord(Str)>=161) and (ord(Str)<=169) Then i:=i+2 Else Begin i:=i+2; Character:=Character+1; end;endElsei:=i+1;Until i>=length(Str);showmessage('共有'+IntToStr(Character)+'个汉字');end;这佛送的,都已到送到天堂了,不给分结贴说不过去.
 
兴10-10-021井位于辽宁省盘锦市兴隆台渤海乡乔家村西偏南约600m。或者这么问也行,假如最开始焦点处于最前方,如果移动到最后,需要移动多少次光标呢??===1个字符一次啊,用WIDESTRING. 一个汉字又不需要你移动2次光标.procedure TForm1.FormCreate(Sender: TObject);const w:widestring='兴10-10-021井位于辽宁省盘锦市兴隆台渤海乡乔家村西偏南约600m';begin caption:=format('光标要移动 %d 次',[length(w)]);end;
 
函数c:=CharToBtyeLen(S) (记得也不是很清楚) 算出有多少字节L:=length(S)有多少字符汉字数:=c-L
 
Var S:String; SW:WideString;Begin S:='函数AA'; sw:=S; ShowMessage( inttostr(S) ); //返回6 ShowMessage( inttostr(SW) );//返回4end;
 
或者这么问也行,假如最开始焦点处于最前方,如果移动到最后,需要移动多少次光标呢??==请个小孩子数一下。
 
多人接受答案了。
 
后退
顶部