回 帖 发 新 帖 刷新版面

主题:[求助]如何截取中文字符串,谢谢~!(急,在线等)

如题,能否给出程序!

回复列表 (共8个回复)

沙发

pos函数就应该能取
pos('截取的汉字',stringvar);

板凳

用DELPHI啊,你说的是不行的

3 楼

是delphi,它提示什么?怎么不行?我都试了行,你看看
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
  I:Integer;
begin
  if edit1.Text = '' then
  begin
    showmessage('文本框为空!');
    exit
  end
  else
  begin
    s := edit1.Text;
    I := pos('您好',s);
    if I>0 then
    begin   
      showmessage('文本框中有您好!');
    end
    else
    begin   
      showmessage('文本框没有中有您好!');
    end;
  end;
end;

end.

4 楼

用midstr函数
比如说temp:='delphi7.0';
k:=midstr(temp,2,2);
运行后k的值就是"id"
从第二位起数两位数.

5 楼

取一字是两个字节,你要取偶数个字节,

6 楼

Pos(substr,string);//返回的是string变量中substr所在的位置
例如:Pos('abc','123abc456');返回的就是4,即'abc'中的'a'所在位置
然后用
Copy(string,postion,length);//来获得string变量中,从postion开始,length个字节长的子串,这里要注意一个汉字是2个字节.
例如:Copy('abcdefg',3,3);//返回的就是'cde'
如果是Copy('你好',1,2);//返回的就是你
如果是Copy('我不好',2,3);//就应该是'不*'(*处代表乱码),或者报错.

7 楼

感谢!

8 楼

procedure TForm1.Button1Click(Sender: Tobject);
var s:string;
I,e,c:integer;
begin
s:=memo1.text;
e:=0;c:=0;
for I:=1 to length(s) do
begin
if (ord(s[I])>=33)and(ord(s[I])<=126) then
begin
inc(e);
label1.caption:='英文字数:'+inttostr(e);
end
else
if (ord(s[I])>=127) then
begin
inc(c);
label2.caption:='中文字数:'+inttostr(c div 2);
end;
end;
end;

我来回复

您尚未登录,请登录后再回复。点此登录或注册