[英]How do i fill a TDictionay from a list of comma-separated string pairs?
我想要一个带有字符串列表的文本文件(例如,用逗号分隔的逗号和可用于自动替换的值),并将每个键值对存储在TDictionary<string, string>
。 如何填充字典?
从您的评论看来,您似乎想知道如何将一些逗号分隔的键值对提取到字典中。 这是一个基本示例:
procedure PopulateKeyValueDict(Strings: TStrings;
Dict: TDictionary<string, string>);
var
CommaPos: Integer;
Line: string;
Key, Value: string;
begin
for Line in Strings do
begin
CommaPos := Pos(',', Line);
if CommaPos=0 then
raise Exception.CreateFmt(
'Could find comma separated key/value pair in ''%s''',
[Line]
);
Key := Copy(Line, 1, CommaPos-1);
Value := Copy(Line, CommaPos+1, MaxInt);
Dict.Add(Key, Value);
end;
end;
您可能想要添加更多错误检查等,但是我假设您已经知道该怎么做。 本示例说明了在第一个逗号上分割一行,以及如何填充字典。
为了使用它,您需要将文件传输到TStrings
对象。 这是例行程序:
var
Strings: TStringList;
....
Strings := TStringList.Create;
try
Strings.LoadFromFile(FileName);
PopulateKeyValueDict(Strings, Dict);
finally
Strings.Free;
end;
如果您只有一对一的键/值关系(不像三个关键字“ apple”,“ apples”和“ McIntoshes”会变成“ McIntosh”),那么最简单的方法可能是使用TStringList,提供了
Key=Value
行,而不是Key,Value
然后,您使用http://docwiki.embarcadero.com/Libraries/XE3/en/System.Classes.TStrings.Values
为了加快速度,您可以使用IniFiles单元的THashedStringList。 JclXML单元中的JCL中也有类似的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.