如何在某个字符处拆分字符串?

noo*_*oob 2 delphi

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

我正在使用德尔福 7。

And*_*and 5

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;
Run Code Online (Sandbox Code Playgroud)

或者,如果你不喜欢魔法,

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;
Run Code Online (Sandbox Code Playgroud)

如果您出于某种非常奇怪和稍微奇怪的原因需要一个过程而不是一个函数,那么请执行以下操作

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;
Run Code Online (Sandbox Code Playgroud)

  • @noob:然后用 `'*'` 替换 `'&'`。 (3认同)
  • BlaXpirit:是什么阻止您编写具有类似字符串函数的类 Python 库?语法可能不同,但结果和易用性可能相同。还添加一些 OS X Foundation 字符串函数,您就可以使用一些很好的东西。<g> (2认同)