一个字符串,有半角的英文字符,也有全角的汉字字符,如何针对每个字符(每个英文字符或汉字)进行区分,对它进行操作。比如一个字符串:'I_want_to_测试一下!!',我想单个字符一个一个地输出,即:先输出 I ,然后 _ ,然后 w,a,n.....,测,试,一,下,!,!。试了一下不行,找不出原因,请大家指教一下。这里先谢谢了!!源程序如下:unit T;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,StrUtils;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
str: String;
i: integer;
begin
str := 'I_want_to_测试一下!!';
Memo1.Lines.Add(str);
for i := 1 to length(str) do
Memo1.Lines.Add(leftstr(str,i));
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,StrUtils;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
str: String;
i: integer;
begin
str := 'I_want_to_测试一下!!';
Memo1.Lines.Add(str);
for i := 1 to length(str) do
Memo1.Lines.Add(leftstr(str,i));
end;end.
str: WideString;
i: integer;
begin
str := 'I_want_to_测试一下!!';
Memo1.Lines.Add(str);
for i := 1 to length(str) do
Memo1.Lines.Add(str[i]);
end;这样即可。
我来的时候你还没答,我研究了半天了,测试好久了,结果是出来了,但很复杂。没想到这么简单。顺便问一下,如果我要把里边的中文全找出来该怎么做。 我的方法可以实现,但不一定完全对,有没有好的办法啊!
我的方法是:
procedure TForm1.Button1Click(Sender: TObject);
var
str: String;
i,t: integer;begin
str := 'I_want_to_测试一下!!';
Memo1.Lines.Add(str);
showmessage(chr(32));
i:=1;
while i<=length(str) do
begin
if (ord(str[i])>32) and (ord(str[i])<129) then
begin i:=i+1;
end else
begin
Memo1.Lines.Add(str[i]+str[I+1]);
i:=i+2;
end;
end
end;
vS : WideString;
I : Integer;
begin
vS := 'I_want_to_测试一下!!'; for I:=1 to length(vS) do ShowMessage(vS[I]);
end;
str: WideString;
temp: String;
i: integer;
begin
str := 'I_want_to_测试一下!!';
Memo1.Lines.Add(str);
for i := 1 to length(str) do
begin
temp:=str[i];
if length(temp)=2 then
Memo1.Lines.Add(str[i]);
end;
end;
begin
Result := Copy(WideString(AText), 1, ACount);
end;function LeftStr(const AText: WideString; const ACount: Integer): WideString; overload;
begin
Result := Copy(AText, 1, ACount);
end;