簡體   English   中英

如何從逗號分隔的字符串對列表中填充TDictionay?

[英]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,提供了

  1. U使您的文件恰好是Key=Value行,而不是Key,Value
  2. 您要么需要區分大小寫,要么需要對文件進行UpperCase處理。

然后,您使用http://docwiki.embarcadero.com/Libraries/XE3/en/System.Classes.TStrings.Values

為了加快速度,您可以使用IniFiles單元的THashedStringList。 JclXML單元中的JCL中也有類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM