Delphi 如何在某个字符处拆分字符串?
如何将一行文本(例如,Delphi 如何在某个字符处拆分字符串?,delphi,Delphi,如何将一行文本(例如,Hello there*3)拆分为一个数组?*之前的所有内容都需要添加到第一个元素,而*之后的所有内容都需要添加到第二个元素。我相信这是可能的。稍后我需要回忆一下,第一项和第二项必须相互关联 我用的是Delphi7 type TStringPair = array[0..1] of string; function SplitStrAtAmpersand(const Str: string): TStringPair; var p: integer; begin
Hello there*3
)拆分为一个数组?*
之前的所有内容都需要添加到第一个元素,而*
之后的所有内容都需要添加到第二个元素。我相信这是可能的。稍后我需要回忆一下,第一项和第二项必须相互关联
我用的是Delphi7
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;
在我看来,你的“一行”的例子更像是三行。也许你应该弄清楚什么是输入,什么是预期的输出。你使用的是哪个版本的delphi?你说的是“多维数组”,但你的例子表明你只对一维数组感兴趣…@David:这就是为什么我在你发送评论之前就修复了它!这真的很悲哀,尤其是与Python中一个非常可移植的解决方案只需要一行代码相比:
'Hello there*3'。split('*')
@noob:然后用'*'
替换'&
。BlaXpirit:是什么阻止了您编写类似于Python的具有类似字符串函数的库?语法可能不同,但结果和易用性可能是相同的。还添加了一些OS X基础字符串函数,并且有了一些很好的工作。noob:为什么你更喜欢它是一个过程而不是一个函数?