/// <summary> /// 情報の辞書を作成します。 /// </summary> /// <param name="lines">標準テキストファイルの行配列</param> /// <returns>情報の辞書</returns> private static Dictionary <string, string> buildInfoDictionary(string[] lines) { var dic = new Dictionary <string, string>(); var infoIndex = 0; var infoLength = -1; var isInfoReading = false; var sb = new StringBuilder(); string[] keyValue = null; foreach (var line in lines) { // 情報行読み取り中ではないか? if (!isInfoReading) { keyValue = line.Split(SimpleText.Separator.KeyValue); infoLength = SimpleText.GetInfoLength(keyValue[0]); if (infoLength == SimpleText.Length.Default) { // 通常は1行にKeyValueがセットされている dic.Add(keyValue[0], keyValue[1]); } else { // 複数行情報 isInfoReading = true; infoIndex = 1; sb = new StringBuilder(); } } else { if (infoIndex >= infoLength - 1) { // 最終行 sb.Append(line); } else { // 最終行以外 sb.AppendLine(line); } infoIndex++; if (infoIndex >= infoLength) { // 情報を終端まで読み込んだので、辞書に追加 dic.Add(keyValue[0], sb.ToString()); isInfoReading = false; } } } return(dic); }