public FinalResult SegmentAB(SegmentInput A, SegmentInput B, double devW, double devSpace) { FinalResult result = new FinalResult(); ResultA resA = SegmentA(A, devW); ResultB resB = SegmentB(B, devW, devSpace); result.Date = resA.Date; result.DotA = resA.Dot; result.IndexDateEnd = resA.IndexDateEnd; result.IndexDateStart = resA.IndexDateStart; result.DotB = resB.Dot; result.IndexDotBStart = resB.IndexDotStart; result.IndexDotBEnd = resB.IndexDotEnd; return(result); }
public ResultA SegmentA(SegmentInput A, double devW) { //Segment A in Dot + Date ResultA result = new ResultA(); //final result for A SegmentResult segmentRes = Segment(A, devW); //Segment A --> list of indexes and spaces int n = segmentRes.FilteredString.Length; int indexStartDate = 0; int indexEndDate = 0; string str = segmentRes.FilteredString; string date = ""; string dot = ""; List <int> indexList = new List <int>(); indexList = segmentRes.SegmentIndexList; // METHOD ADRIAAN //We have segmented first, now we want to check if the last segment is indeed the date timestamp //We work from right to left! if (n > 0 && indexList.Count > 1) //At least 2 segments { int i = (indexList.Count - 1); //Start from the last segment (ex. count = 12 --> last index = 11) int j = n; //end of last segment while (i > 0) //At least 2 segments { if ((j - indexList[i]) > 3) //timestamp = 4 karakters, length of segment { indexStartDate = indexList[i]; if (i != (indexList.Count - 1)) //if not the last segment { indexEndDate = indexList[i + 1] - 1; //previous index of segment -1, is end of current segment } else //if last segment { indexEndDate = n - 1; } break; } j = indexList[i]; // length of next segment = previous index - start index next segment i--; //Work from right to left } } if (n > 3 && indexList.Count == 1) //Only 1 segment and string at least 4 char --> we assume last 4 characters are timestamp { indexEndDate = n - 1; indexStartDate = n - 4; } if (indexStartDate > 0 && indexEndDate >= (indexStartDate + 4)) { date = str.Substring(indexStartDate, ((indexEndDate + 1) - indexStartDate)); dot = str.Substring(0, indexStartDate); } else { date = "0000"; indexEndDate = n; dot = str; } result.Date = date; result.Dot = dot; result.IndexDateEnd = indexEndDate; result.IndexDateStart = indexStartDate; return(result); }