分隔-识别-字符串 ( 积分: 29 )

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

zqssoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我how 是中国人a chinese.how are you.

以上memo1中的文本,如何在memo2中分行成如下形式:

how




a
chinese
.
how
are
you
.
然后,如何点击一个按钮Button1判断每一行的内容是英文,还是汉字,还是标点符号,并一一标明。如下:
我[汉字]
how[英文]
是[汉字]
中[汉字]
国[汉字]
人[汉字]
a [英文]
chinese[英文]
,[标点符号]
how[英文]
are[英文]
you[英文]
.[标点符号]

哪位能解答此问题的大侠,小弟仅有的29分全部奉上。
 
memo1最好用Edit1

Procedure ShowType(TmS:String;Var St,CType:Integer;I,_Type:Integer);
Var
TmS1:String;
Begin
TmS1:=Copy(TmS,St,I-St); // 提取相应的串!
Case CType Of
0: Memo2.Lines.Add(TmS1+'[符号]');
1: Memo2.Lines.Add(TmS1+'[英文]');
2: Memo2.Lines.Add(TmS1+'[中文]');
End;
St:=I; // 新起始位置!
CType:=_Type; // 新类型!
End;

Procedure TForm1.Botton1Click();
Var
St : Word;
TmS1 : String;
CType : Byte; { 0:符号, 1:引文 2:中文 }
begin
TmS:=Trim(Edit1.Text);
Case TmS[1] of
'a'..'z','A'..'Z' : CType:=1;
#128..#255 : CType:=2;
Else
CType:=0;
End;

St:=1;
For I:=2 To LengTh(TmS) Do
Begin
Case TmS of
'a'..'z','A'..'Z' :
If (CType<>1) Then
ShowType(TmS,St,CType,I,1);
#128..#255:
begin
If (CType<>2) Then
ShowType(TmS,St,CType,I,2);
end Else
If (CType<>0) Then
ShowType(TmS,St,CType,I,0);
End; // Case
End; // For
end;

愉快!
呵呵!
自己调试!
 
有点错误,没有声明 memo2.
找不到 Tms。
 
幫頂。。。。:)
 
后退
顶部