コード例 #1
0
        //-------------Methods
        private string AnalizarParteEntera(string parteEntera)
        {
            //parteEntera debe estar en un rango de 0 a 999,999,999

            List <ReglaConstruccionCadenaATexto> tabla = ConstruirTablaFilasConstruccionCadenaATexto();
            ReglaConstruccionCadenaATexto        regla = BuscarFilaEn(tabla, parteEntera);
            string textoConCeros = GenerarCadenaConCeros(parteEntera, regla);

            TraductorATextoPesos traductorAtextoPesos = new TraductorATextoPesos();

            StringBuilder resultado = new StringBuilder();

            for (int i = 0; i < textoConCeros.Length; i += 3)
            {
                string cadDe3Digitos          = textoConCeros.Substring(i, 3);
                string fragmentoNumeroEnTexto = traductorAtextoPesos.ATexto(cadDe3Digitos);


                if (fragmentoNumeroEnTexto.Equals("cero"))
                {   //no se añade
                }

                else
                {
                    resultado.Append(fragmentoNumeroEnTexto);

                    //Las siguientes 2 lineas ubican si el contador del for i esta en una posicion de millo ó mil, etc
                    string numTemporal = textoConCeros.Substring(i, textoConCeros.Length - i);
                    ReglaConstruccionCadenaATexto reglaTemp = BuscarFilaEn(tabla, numTemporal);

                    if (reglaTemp.CantidadEspaciosEnCadenaVacia == 9)
                    {
                        if (Int32.Parse(cadDe3Digitos) == 1)
                        {
                            resultado.Append(" millon ");
                        }
                        else
                        {
                            resultado.Append(" millones ");
                        }
                    }

                    else if (reglaTemp.CantidadEspaciosEnCadenaVacia == 6)
                    {
                        resultado.Append(" mil ");
                    }
                }
            }


            if (resultado.ToString().Length == 0)
            {
                return("cero");
            }
            else
            {
                return(resultado.ToString());
            }
        }
コード例 #2
0
        private string GenerarCadenaConCeros(string parteEntera, ReglaConstruccionCadenaATexto regla)
        {
            int nCeros = regla.CantidadEspaciosEnCadenaVacia - parteEntera.Length;

            StringBuilder s = new StringBuilder();

            s.Append('0', nCeros);
            s.Append(parteEntera);

            return(s.ToString());
        }
コード例 #3
0
        private ReglaConstruccionCadenaATexto BuscarFilaEn(List <ReglaConstruccionCadenaATexto> tabla, string parteEntera)
        {
            int longBuscada = parteEntera.Length;

            Func <ReglaConstruccionCadenaATexto, bool> apuntador = (s) =>
            {
                return(longBuscada >= s.LimiteInferiorCadena && longBuscada <= s.LimiteSuperiorCadena);
            };

            ReglaConstruccionCadenaATexto fila = tabla.Single(apuntador);

            return(fila);
        }
コード例 #4
0
        private List <ReglaConstruccionCadenaATexto> ConstruirTablaFilasConstruccionCadenaATexto()
        {
            ReglaConstruccionCadenaATexto fila1 = new ReglaConstruccionCadenaATexto(1, 3, 3, "");
            ReglaConstruccionCadenaATexto fila2 = new ReglaConstruccionCadenaATexto(4, 6, 6, "mil");
            ReglaConstruccionCadenaATexto fila3 = new ReglaConstruccionCadenaATexto(7, 9, 9, "millon");

            List <ReglaConstruccionCadenaATexto> tablaInfoConstruccionCadenaATexto = new List <ReglaConstruccionCadenaATexto>();

            tablaInfoConstruccionCadenaATexto.Add(fila1);
            tablaInfoConstruccionCadenaATexto.Add(fila2);
            tablaInfoConstruccionCadenaATexto.Add(fila3);

            return(tablaInfoConstruccionCadenaATexto);
        }