如何提取字符串中的汉字? ( 积分: 50 )

  • 主题发起人 主题发起人 zgp2000
  • 开始时间 开始时间
Z

zgp2000

Unregistered / Unconfirmed
GUEST, unregistred user!
有一串汉字如“大富翁论坛”。如何一个个的分别提取出来。<br>我一个个提老是提出乱码!
 
有一串汉字如“大富翁论坛”。如何一个个的分别提取出来。<br>我一个个提老是提出乱码!
 
var<br> &nbsp;I:Integer=1; //全局<br>var//局部<br> &nbsp;MyString:WideString;<br>begin<br> &nbsp;MyString:='大富翁论坛';<br> &nbsp;Caption:=MyString;<br> &nbsp;Inc(I);<br>end;
 
可以使用ByteType(const S : String;Index: Integer):TMbcnByteType 来判断字串中的某<br>一位置的字符是否为单字节或双字节(如汉字);结果为mbSingleByte时为单字节,可以用<br>它来简单地字符串中的汉字
 
var<br>sw:widestring;<br>c,s:string;<br>i:word;<br>begin<br>sw:=edit1.Text ;<br>i:=length(sw);<br>for i:=0 to length(sw) do<br>begin<br> &nbsp; &nbsp;c:=sw;<br> &nbsp; &nbsp;if length(c)&gt;1 then<br> &nbsp; &nbsp; &nbsp; &nbsp;s:=s+c;<br>end;<br>edit2.Text :=s;<br>end;
 
unit Unit1;<br><br>interface<br><br>uses<br> &nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> &nbsp;Dialogs, StdCtrls;<br><br>type<br> &nbsp;TForm1 = class(TForm)<br> &nbsp; &nbsp;Edit1: TEdit;<br> &nbsp; &nbsp;Button1: TButton;<br> &nbsp; &nbsp;Edit2: TEdit;<br> &nbsp; &nbsp;procedure Button1Click(Sender: TObject);<br> &nbsp;private<br> &nbsp; &nbsp;{ Private declarations }<br> &nbsp;public<br> &nbsp; &nbsp;{ Public declarations }<br> &nbsp;end;<br><br>var<br> &nbsp;Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>i:integer;<br>begin<br> &nbsp;edit2.Text:='';<br> &nbsp;i:=1;<br> &nbsp;while i&lt;=length(edit1.Text) do<br> &nbsp;begin<br> &nbsp; &nbsp;if not (bytetype(edit1.Text,i)=mbSingleByte) then//如果是双字节<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;edit2.Text:=edit2.Text+copy(edit1.Text,i,2);<br> &nbsp; &nbsp; &nbsp;i:=i+2<br> &nbsp; &nbsp;end<br> &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp;i:=i+1;<br> &nbsp;end;<br>end;<br><br>end.<br><br>民工正确<br>6530的也正确
 
接受答案,散分
 
后退
顶部