Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }