2017-07-28 31 views
0

我想取回(在運行時),其拆分字符串分隔符,如:德爾福斯普利特():獲取分離器進入分離器列表

aStr := 'foo=bar'; 
aParts := aStr.Split(['=', '!', '<', '>', '^']); 

aParts[0]fooaParts[1]bar,但誰是分隔器?有任何方法可以檢索用於分割字符串的字符:=

+1

也許'aStr [Length(aParts [0])+ 1]'? –

+0

@TomBrunberg我很蠢,對不起:D – ar099968

+0

或者,你只是沒有看到它。但請添加一些實際發生的檢查以防止錯誤。 –

回答

1

我認爲你需要分別解析分隔符。例如,下面的代碼將把你的分隔符放到名爲separators的第二個數組中。

var 
    astr: string; 
    aparts: System.TArray<System.string>; 
    separators: System.TArray<System.string>; 
    findindex: integer; 
    findpos: integer; 
begin 
    astr := 'foo=bar!abc^def'; 
    aparts := astr.Split(['=', '!', '<', '>', '^']); 
    findindex := 1; 
    repeat 
    findpos := astr.IndexOfAny(['=', '!', '<', '>', '^'], findindex); 
    if findpos >= 1 then 
    begin 
     SetLength(separators, length(separators) + 1); 
     separators[length(separators) - 1] := astr.Substring(findpos, 1); 
    end; 
    findindex := findpos + 1; 
    until findpos = -1; 
end;