private static HeaderOrFooterInfo GetHeaderOrFooterInfo(string pText) { const string CONST_Left = "Left"; const string CONST_Center = "Center"; const string CONST_Right = "Right"; var LeftIndexes = Helper.GetIndexes(pText, "&l", false); var CenterIndexes = Helper.GetIndexes(pText, "&c", false); var RightIndexes = Helper.GetIndexes(pText, "&r", false); var SideInfos = LeftIndexes.Select(o => new { Side = CONST_Left, Index = o }) .Union(CenterIndexes.Select(o => new { Side = CONST_Center, Index = o })) .Union(RightIndexes.Select(o => new { Side = CONST_Right, Index = o })) .OrderBy(o => o.Index) .ToList() ; var HeaderOrFooterInfo = new HeaderOrFooterInfo(); if (SideInfos.Count == 0) { HeaderOrFooterInfo.Center = pText; return(HeaderOrFooterInfo); } for (int i = 0; i < SideInfos.Count; i++) { var SideInfo = SideInfos[i]; var IsFirstSideInfo = (i == 0); var IsLastSideInfo = (i == (SideInfos.Count - 1)); if (IsFirstSideInfo) { if (SideInfo.Index != 0) { HeaderOrFooterInfo.Center = pText.Substring(0, SideInfo.Index - 1); } } var StartIndex = SideInfo.Index + 2; var EndIndex = 0; if (IsLastSideInfo) { EndIndex = pText.Length - 1; } else { var NextSideInfo = SideInfos[i + 1]; EndIndex = NextSideInfo.Index - 1; } var Length = EndIndex - StartIndex + 1; var Text = pText.Substring(StartIndex, Length); switch (SideInfo.Side) { case CONST_Left: HeaderOrFooterInfo.Left += Text; break; case CONST_Center: HeaderOrFooterInfo.Center += Text; break; case CONST_Right: HeaderOrFooterInfo.Right += Text; break; default: throw new Exception(); } } return(HeaderOrFooterInfo); }
private static HeaderOrFooterInfo GetHeaderOrFooterInfo(string pText) { const string CONST_Left = "Left"; const string CONST_Center = "Center"; const string CONST_Right = "Right"; var LeftIndexes = Helper.GetIndexes(pText, "&l", false); var CenterIndexes = Helper.GetIndexes(pText, "&c", false); var RightIndexes = Helper.GetIndexes(pText, "&r", false); var SideInfos = LeftIndexes.Select(o => new { Side = CONST_Left, Index = o }) .Union(CenterIndexes.Select(o => new { Side = CONST_Center, Index = o })) .Union(RightIndexes.Select(o => new { Side = CONST_Right, Index = o })) .OrderBy(o => o.Index) .ToList() ; var HeaderOrFooterInfo = new HeaderOrFooterInfo(); if (SideInfos.Count == 0) { HeaderOrFooterInfo.Center = pText; return HeaderOrFooterInfo; } for (int i = 0; i < SideInfos.Count; i++) { var SideInfo = SideInfos[i]; var IsFirstSideInfo = (i == 0); var IsLastSideInfo = (i == (SideInfos.Count - 1)); if (IsFirstSideInfo) { if (SideInfo.Index != 0) { HeaderOrFooterInfo.Center = pText.Substring(0, SideInfo.Index - 1); } } var StartIndex = SideInfo.Index + 2; var EndIndex = 0; if (IsLastSideInfo) { EndIndex = pText.Length - 1; } else { var NextSideInfo = SideInfos[i + 1]; EndIndex = NextSideInfo.Index - 1; } var Length = EndIndex - StartIndex + 1; var Text = pText.Substring(StartIndex, Length); switch (SideInfo.Side) { case CONST_Left: HeaderOrFooterInfo.Left += Text; break; case CONST_Center: HeaderOrFooterInfo.Center += Text; break; case CONST_Right: HeaderOrFooterInfo.Right += Text; break; default: throw new Exception(); } } return HeaderOrFooterInfo; }