uses StrUtils;procedure Get2Word(S: String; var First, Second: String); var i, j: Integer; begin First := ''; Second := ''; i := Pos(' ', S); if i > 0 then begin First := Copy(S, 1, i - 1); j := PosEx(' ', S, i + 1); if j > i then Second := Copy(S, i + 1, j - i - 1); end; end;procedure TForm1.Button1Click(Sender: TObject); var f, s: String; begin Get2Word('Pant.H Atlanta bleu/como PC 55/45', f, s); Showmessage(f); Showmessage(s); end;
procedure TForm1.Button1Click(Sender: TObject); var s : String ; begin s := GetFront2Words('Pant.H Atlanta bleu/como PC 55/45') ; ShowMessage(s); end;function TForm1.GetFront2Words(str: String): String; var tempStr ,sReturn: String ; iPos : Integer; begin tempStr := str; iPos := Pos(' ',tempStr); sReturn := Copy(tempStr,1,iPos-1); Delete(tempStr,1,iPos); iPos := Pos(' ',tempStr); sReturn := sReturn + ' ' + Copy(tempStr,1,iPos-1); Result := sReturn; end;
procedure TForm1.Button1Click(Sender: TObject); var s: string; st: Tstringlist; begin st:=Tstringlist.Create; st.DelimitedText:='Pant.H Atlanta bleu/como PC 55/45'; st.Delimiter:=' '; s:=st.Strings[0]+' '+st.Strings[1]; st.Free; showmessage(s); end;
procedure TForm1.Button1Click(Sender: TObject); var s: string; st: Tstringlist; begin st:=Tstringlist.Create; st.DelimitedText:='Pant.H Atlanta bleu/como PC 55/45'; st.Delimiter:=' '; s:=st.Strings[0]+' '+st.Strings[1]; st.Free; showmessage(s); end;
function Get2Word(S: String): string; var i, j: Integer; begin Result:= ''; i := Pos(' ', S); if i > 0 then begin j := PosEx(' ', S, i + 1); if j > i then Result := Copy(S, 1, j + i - 1); end; end;我想把jadeluo的代码改成一个函数且不必区分开第一,第二个词,如上修改对吗?
修改一下,能够处理前两个单词之间有多个空格的情况: function Get2Word(S: String): string; var i, j : Integer; b : Boolean; begin S := Trim(S); Result := S; j := 0; b := False; for i := 1 to Length(S) do begin if S[i] = ' ' then begin if not b then begin b := True; inc(j); if j = 2 then begin Result := copy(S, 1, i - 1); break; end; end; end else b := False; end; end;
uses StrUtils;procedure Get2Word(S: String; var First, Second: String);
var
i, j: Integer;
begin
First := '';
Second := '';
i := Pos(' ', S);
if i > 0 then
begin
First := Copy(S, 1, i - 1);
j := PosEx(' ', S, i + 1);
if j > i then Second := Copy(S, i + 1, j - i - 1);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
f, s: String;
begin
Get2Word('Pant.H Atlanta bleu/como PC 55/45', f, s);
Showmessage(f);
Showmessage(s);
end;
所以你可以这样写
function TForm1.GetFront2Words(str: String): String;
var
tempStr ,sReturn: String ;
iPos : Integer;
begin
tempStr := str;
iPos := Pos(' ',str);
sReturn := Copy(tempStr,1,iPos-1);
Delete(tempStr,1,iPos);
iPos := Pos(' ',str);
sReturn := sReturn + ' ' + Copy(tempStr,1,iPos-1);
Result := sReturn;
end;
var
s : String ;
begin
s := GetFront2Words('Pant.H Atlanta bleu/como PC 55/45') ;
ShowMessage(s);
end;function TForm1.GetFront2Words(str: String): String;
var
tempStr ,sReturn: String ;
iPos : Integer;
begin
tempStr := str;
iPos := Pos(' ',tempStr);
sReturn := Copy(tempStr,1,iPos-1);
Delete(tempStr,1,iPos);
iPos := Pos(' ',tempStr);
sReturn := sReturn + ' ' + Copy(tempStr,1,iPos-1);
Result := sReturn;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
st: Tstringlist;
begin
st:=Tstringlist.Create;
st.DelimitedText:='Pant.H Atlanta bleu/como PC 55/45';
st.Delimiter:=' ';
s:=st.Strings[0]+' '+st.Strings[1];
st.Free;
showmessage(s);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
st: Tstringlist;
begin
st:=Tstringlist.Create;
st.DelimitedText:='Pant.H Atlanta bleu/como PC 55/45';
st.Delimiter:=' ';
s:=st.Strings[0]+' '+st.Strings[1];
st.Free;
showmessage(s);
end;
function Get2Word(S: String): string;
var
i, j: Integer;
begin
Result:= '';
i := Pos(' ', S);
if i > 0 then
begin
j := PosEx(' ', S, i + 1);
if j > i then
Result := Copy(S, 1, j + i - 1);
end;
end;我想把jadeluo的代码改成一个函数且不必区分开第一,第二个词,如上修改对吗?
牛!
function Get2Word(S: String): string;
var
st: Tstringlist;
begin
Result:='';
st:=Tstringlist.Create;
st.DelimitedText:=S;
st.Delimiter:=' ';
Result:=st.Strings[0]+' '+st.Strings[1];
st.Free;
end;换成函数这样修改对么?
function Get2Word(S: String): string;
var
i, j : Integer;
b : Boolean;
begin
S := Trim(S);
Result := S;
j := 0;
b := False;
for i := 1 to Length(S) do
begin
if S[i] = ' ' then
begin
if not b then
begin
b := True;
inc(j);
if j = 2 then
begin
Result := copy(S, 1, i - 1);
break;
end;
end;
end
else b := False;
end;
end;