private List <Sheet.SheetIdPart> parseSheetIdForSheetParts(string sheetId, List <SheetPartsDescriptor.PartIndex> partIndexList) { List <Sheet.SheetIdPart> SheetParts = new List <Sheet.SheetIdPart>(); foreach (SheetPartsDescriptor.PartIndex partIndex in partIndexList) { string sheetPartLibId = partIndex.LibraryId; SheetPartData spd = SheetSystemManager.SheetPartsManager.SheetPartDataList[sheetPartLibId]; if (!spd.IsValid) { continue; } int groupIdx = spd.PartPatternGroup; Match match = Regex.Match(sheetId, spd.PartPattern, RegexOptions.Singleline); if (match.Groups.Count < groupIdx) { continue; } string result = match.Groups[groupIdx].Value.Trim(); int len = result.Length; if (!validateSheetPart(result, spd)) { continue; } Sheet.SheetIdPart idPart = new Sheet.SheetIdPart(result, sheetPartLibId); SheetParts.Add(idPart); } return(SheetParts); }
private bool validateSheetPart(string sheetPart, SheetPartData spd) { int len = sheetPart.Length; if (len < spd.PartMinLen) { return(false); } if (spd.PartMaxLen > 0) // 0 == unlimited { if (len > spd.PartMaxLen) { return(false); } } return(true); }