gpt4 book ai didi

string - 如何在字符串中存储和加载键值对列表?

转载 作者:行者123 更新时间:2023-12-03 15:27:16 27 4
gpt4 key购买 nike

我有一个字符串列表以及要替换它们的值。我正在尝试将它们组合在一个列表中,例如 'O'='0',' .'='.', ... 这样我就可以轻松编辑它并添加更多对进行替换。

现在我能想到的最好的方法是:

var
ListaLimpeza : TStringList;
begin
ListaLimpeza := TStringList.Create;

ListaLimpeza.Delimiter := '|';
ListaLimpeza.QuoteChar := '"';
ListaLimpeza.DelimitedText := 'O=0 | " .=."';

ShowMessage('1o Valor = '+ListaLimpeza.Names[1]+' e 2o Valor = '+ListaLimpeza.ValueFromIndex[1]);

这可行,但对视觉效果不好,因为我无法像这样编码之前的字符串(例如 ' .')(这对于 SPACE 字符来说非常直观),只能就像 (".) 一样,= 可以在 TStringList 中分配名称和值。

最佳答案

默认情况下,名称 必须以= 分隔,采用Windows INI 文件的样式。 AFAICT 无法更改该分隔符。 正如 @SirRufo 在评论中指出的那样(我从未注意到),您可以使用 TStringList.NameValueSeparator 属性更改它。

这将使您了解 Delphi 认为您的 TStringList 中的内容,而这并不是您所认为的:

procedure TForm1.FormCreate(Sender: TObject);
var
SL: TStringList;
Temp: string;
i: Integer;
begin
SL := TStringList.Create;
SL.Delimiter := '|';
SL.QuoteChar := '"';
SL.StrictDelimiter := True;
SL.DelimitedText := 'O=0 | ! .!=!.!';
Temp := 'Count: ' + IntToStr(SL.Count) + #13;
for i := 0 to SL.Count - 1 do
Temp := Temp + Format('Name: %s Value: %s'#13,
[SL.Names[i], SL.ValueFromIndex[i]]);
ShowMessage(Temp);
end;

这会产生以下输出:

Sample ShowMessage output from above code

TStringList 名称/值可能无法满足您的需要。目前尚不清楚您的实际目标是什么,但似乎一个带有简单的 text|replacement 列表和该文件的简单解析的简单文本文件就可以工作,并且您可以轻松使用 TStringList 从该文件中读取/写入,但除了自己做之外,我没有看到任何方法可以轻松地进行解析。解析它们时,您可以使用数组来存储这些对:

type
TReplacePair = record
TextValue: string;
ReplaceValue: string;
end;

TReplacePairs = array of TReplacePair;

function GetReplacementPairs: TReplacePairs;
var
ConfigInfo: TStringList;
i, Split: Integer;
begin
ConfigInfo := TStringList.Create;
try
ConfigInfo.LoadFromFile('ReplacementPairs.txt');
SetLength(Result, ConfigInfo.Count);
for i := 0 to ConfigInfo.Count - 1 do
begin
Split := Pos('|`, ConfigInfo[i];
Result[i].TextValue := Copy(ConfigInfo[i], 1, Split - 1);
Result[i].ReplaceValue := Copy(ConfigInfo[i], Split + 1, MaxInt);
end;
finally
ConfigInfo.Free;
end;
end;

然后,您可以填充编辑/添加/删除替换对所需的任何控件,只需反转读取操作即可将它们写回保存。

关于string - 如何在字符串中存储和加载键值对列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com