User Input


Alguna vez se han preguntado, de cuantas formas diferentes un usuario puede codificar el numero de la semana y año en el nombre de un archivo???, aqui esta una funcion q siempre devolvera "WW YY" donde "w" es el numero de la semana y "Y" el numero del año.
 

private string ParseFileWeek(string FileName)

{

    //combinaciones

 

    //0406SBL_MEX.xls

    //042006SBL_MEX.xls

    //04_06SBL_MEX.xls

    //04_2006SBL_MEX.xls

    //406SBL_MEX.xls

    //42006SBL_MEX.xls

    //4_06SBL_MEX.xls

    //4_2006SBL_MEX.xls

 

    //0406SBL_MEX_02.xls

    //042006SBL_MEX_02.xls

    //04_06SBL_MEX_02.xls

    //04_2006SBL_MEX_02.xls

    //406SBL_MEX_02.xls

    //42006SBL_MEX_02.xls

    //4_06SBL_MEX_02.xls

    //4_2006SBL_MEX_02.xls

   

    //sin año

    //04SBL_MEX.xls

    //4SBL_MEX.xls

    //04SBL_MEX_02.xls

    //4SBL_MEX_02.xls

   

    //nombre sin owner

    string tmpfileName = FileName.Replace(this.GetOwner(FileName)+";","");           

    //toma la extencion sin importar la cantidad de puntos

    string ext = tmpfileName.Split(‘.’)[tmpfileName.Split(‘.’).Length – 1];

    //quitando la extension

    tmpfileName = tmpfileName.Replace("." + ext, "");

 

    string[] firstCompleteNum = this.GetCompleteNum(tmpfileName);

    //buscar el primero q contenga un cero

    //checar la long, si es de 3 es 706

   

    string weekYear = "";

    string wk = "";

    string year = "";

   

    int c = 0;

    foreach (string week in firstCompleteNum)

    {   //es la semana y el año, pero si esta dividido y ademas el año esta completo.

        if ((week.IndexOf(‘0’) >= 0) && (week.Length > 2) && (week.Length < 7))

        {

            if (c == 0)

                weekYear = week;

            else

            {

                weekYear = firstCompleteNum[c-1] + firstCompleteNum[c];

            }

            break;

        }

        c++;

    }

    //si no encontro nada, posiblemente la semana y el año se encuentran separados por algun caracter.

    c = 0;

    if (weekYear.Length == 0)

    {

        foreach (string yearItem in firstCompleteNum)

        {   //se busca el año  06 o 2006, para q sea el año no debe ser el primer elemento, y la semana es el elemento anterior

            if ((yearItem.IndexOf(‘0’) >= 0) && (yearItem.Length > 1) && (yearItem.Length < 5))

            {

                if (c > 0)

                {

                    year = yearItem;

                    wk = firstCompleteNum[c – 1];

                    break;

                }

            }

            c++;

        }

        //aqui valido si se encontro algo para year y wk por separado.

        if (year.Length == 0)

        {

            //si no encontro nada para el año entonces solo contiene el numero de la semana

            //verificar si contiene almenos un elemento y q este sea menor a 53;

            foreach (string week in firstCompleteNum)

            {   //es la semana y el año

                if ((week.Length > 0) && (week.Length < 3))

                {

                    if ((int.Parse(week) > 0) && (int.Parse(week) < 53))

                    {

                        wk = week;

                        year = DateTime.Now.Year.ToString().Substring(2, 2);

                    }

                    break;

                }

            }

        }

        if (wk.Length == 1)

            wk = "0" + wk;

        if (year.Length == 4)

            year = year.Substring(2, 2);

    }

    else

    {

        if (weekYear.Length == 3)//706

        {

            year = weekYear.Substring(1, 2);

            wk = "0" + weekYear.Substring(0, 1);

        }

        else if (weekYear.Length == 4)//0706

        {

            year = weekYear.Substring(2, 2);

            wk = weekYear.Substring(0, 2);

        }

        else if (weekYear.Length == 5)//72006

        {

            year = weekYear.Substring(3, 2);

            wk = "0" + weekYear.Substring(0, 1);

        }

        else if (weekYear.Length == 6)//072006

        {

            year = weekYear.Substring(4, 2);

            wk = weekYear.Substring(0, 2);

        }

    }

 

 

    if (year.Length > 0)

        return wk + " " + year;

   

    return "";

}

 

Advertisements