如何将字符串拆分为某个字符?

时间:2011-09-20 19:57:21

标签: delphi

如何将一行文本(例如Hello there*3)拆分为数组?需要将*之前的所有内容添加到第一个元素,并且需要将*之后的所有内容添加到第二个元素。我确信这是可能的。我需要稍后再回忆一下,第一和第二项必须彼此相关

我正在使用Delphi 7。

1 个答案:

答案 0 :(得分:4)

type
  TStringPair = array[0..1] of string;

function SplitStrAtAmpersand(const Str: string): TStringPair;
var
  p: integer;
begin
  p := Pos('&', Str);
  if p = 0 then
    p := MaxInt - 1;      
  result[0] := Copy(Str, 1, p - 1);
  result[1] := Copy(Str, p + 1);
end;

或者,如果你没有魔法,

function SplitStrAtAmpersand(const Str: string): TStringPair;
var
  p: integer;
begin
  p := Pos('&', Str);
  if p > 0 then
  begin
    result[0] := Copy(Str, 1, p - 1);
    result[1] := Copy(Str, p + 1);
  end
  else
  begin
    result[0] := Str;
    result[1] := '';
  end;
end;

如果你因某些奇怪而有些奇怪的原因需要一个程序而不是一个函数,那就

procedure SplitStrAtAmpersand(const Str: string; out StringPair: TStringPair);
var
  p: integer;
begin
  p := Pos('&', Str);
  if p > 0 then
  begin
    StringPair[0] := Copy(Str, 1, p - 1);
    StringPair[1] := Copy(Str, p + 1);
  end
  else
  begin
    StringPair[0] := Str;
    StringPair[1] := '';
  end;
end;