Пример #1
0
        /// <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);
        }