字符串问题(100分)

  • 主题发起人 主题发起人 panwen
  • 开始时间 开始时间
P

panwen

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一组字符串,每个字符串中都有一个‘-’符号将字符串分成两部分,我希望取所有字符串中‘-’前面的部分,比如'hello-john'取‘hello’,大家帮忙啊!急~~~最好能提供源程序
 
Newstr:=copy(Str,1,pos('-',str)-1)
 
2楼正解:
Pos(obj,target);//返回字符串obj在目标字符串target的第一次出现的位置,如果target没有匹配的串,Pos函数的返回值为0。例如,target:='Brian
Copy(st.pos.num);//返回st串中一个位置pos(整型)处开始的,含有num(整型)个字符的子串。如果pos大于st字符串的长度,那就会返回一个空串,如果pos在255以外,会引起运行错误。例如,st:='Brian',则Copy(st,2,2)返回'ri'。
 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
function field(str:string): string;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
str:TStringList;
str1:string;
str2:string;
i:integer;

begin
Memo1.Lines.Clear;
str:=TStringList.Create;
if OpenDialog1.Execute then
begin
str.LoadFromFile(OpenDialog1.FileName);
for i:=0 to str.Count-1 do
begin
str1:=str.Strings;
str2:=field(str1);
Memo1.Lines.Add(str2);
end;
end;

end;

function TForm1.field(str:string): string;
var
s:TStringList;
i:integer;

begin
s:=TStringList.Create;
s.Delimiter :='-';
s.DelimitedText :=str;
for i:=0 to s.Count-1 do
begin
Result:=trim(s.Strings[0]);
end;
end;

end.

在Delphi7中调试通过,不知道能不能满足你的要求
 
var
Str, Before, After : string;
begin
Str := 'hello-john';
Before := copy(Str, 1, pos('-',str)-1);
After := copy(Str, pos('-', str) + 1, MaxInt);

ShowMessage(Before + #13 + After);
end;
 
附上测试文件

hello-trsdfr
hsd-john
helsdf-sdfsdf
hesdfd-sdfdf
hesdf-dfsdfff
heasdf-jasdfsdf
helfasd-jasdfsdf
hesdf-jgggg
 
同意楼上兄弟们的说法。
 

Similar threads

后退
顶部