Contar una serie de tokens, cadenas o caracteres de un archivo...

03/11/2010 - 21:02 por Fuy | Informe spam
Saludos,

Me encuentro con el siguiente problema. Tengo un archivo fuente y
quiero contar cuántos ',' ';' if else while etc... hay en el archivo.

En Java hay una clase que se llama Scanner que me puede ayudar a
contar lo que necesito.

En la documentación de C# no he encontrado algo parecido. Encontré lo
siguiente: Contains

http://msdn.microsoft.com/es-es/library/dy85x1sa(VS.80).aspx

Y veo que eso me puede servir, pero cuando empiezo a leer el archivo y
uso Contains me sale una excepción que dice lo siguiente:

"Referencia a objeto no establecida como instancia de un objeto".

Tengo lo siguiente:



StreamReader sr = new StreamReader(dir);
string lineas = "";

while (lineas != null)
{

lineas = sr.ReadLine();

if (lineas.Contains(";") == true)
{
Console.WriteLine("LLevamos {0} token's:",
contador);
contador++;
}

}
sr.Close();

Conocen algún método que cuente tokens en C#?

Atentamente
José

Preguntas similare

Leer las respuestas

#1 RFOG
04/11/2010 - 10:15 | Informe spam
Tienes el string.Split() de la clase String, que creo hace exactamente
lo que tu queres, aunque obtienes un array con todos los "tokens".


On Wed, 3 Nov 2010 13:02:31 -0700 (PDT), Fuy
wrote:

Saludos,

Me encuentro con el siguiente problema. Tengo un archivo fuente y
quiero contar cuántos ',' ';' if else while etc... hay en el archivo.

En Java hay una clase que se llama Scanner que me puede ayudar a
contar lo que necesito.

En la documentación de C# no he encontrado algo parecido. Encontré lo
siguiente: Contains

http://msdn.microsoft.com/es-es/library/dy85x1sa(VS.80).aspx

Y veo que eso me puede servir, pero cuando empiezo a leer el archivo y
uso Contains me sale una excepción que dice lo siguiente:

"Referencia a objeto no establecida como instancia de un objeto".

Tengo lo siguiente:



StreamReader sr = new StreamReader(dir);
string lineas = "";

while (lineas != null)
{

lineas = sr.ReadLine();

if (lineas.Contains(";") == true)
{
Console.WriteLine("LLevamos {0} token's:",
contador);
contador++;
}

}
sr.Close();

Conocen algún método que cuente tokens en C#?

Atentamente
José


ÿþM
Respuesta Responder a este mensaje
#2 Daniel Cáceres
04/11/2010 - 11:18 | Informe spam
On 3 nov, 16:02, Fuy wrote:
Saludos,

Me encuentro con el siguiente problema. Tengo un archivo fuente y
quiero contar cuántos ',' ';' if else while etc... hay en el archivo.

En Java hay una clase que se llama Scanner que me puede ayudar a
contar lo que necesito.

En la documentación de C# no he encontrado algo parecido. Encontré lo
siguiente: Contains

http://msdn.microsoft.com/es-es/library/dy85x1sa(VS.80).aspx

Y veo que eso me puede servir, pero cuando empiezo a leer el archivo y
uso Contains me sale una excepción que dice lo siguiente:

"Referencia a objeto no establecida como instancia de un objeto".

Tengo lo siguiente:



        StreamReader sr = new StreamReader(dir);
                    string lineas = "";

                    while (lineas != null)
                    {

                        lineas = sr.ReadLine();

                        if (lineas.Contains(";") == true)
                        {
                            Console.WriteLine("LLevamos {0} token's:",
contador);
                            contador++;
                        }

                    }
                    sr.Close();

Conocen algún método que cuente tokens en C#?

Atentamente
José



Buenas, la solución más acertada para este caso creo que sería usar
expreesiones regulares. El código quedaría así:

using(TextReader sr = new TextReader(dir))
{
string text = sr.ReadToEnd();

var tokensCollection = Regex.Matches(text, ";|
while|if"); // y todos los tokens separados por |

Console.WriteLine("Encontrados {0}
token's:", tokensCollection.Count);
}

Saludos y esperro que te sea de ayuda.
Respuesta Responder a este mensaje
#3 Fuy
06/11/2010 - 03:36 | Informe spam
Muchas gracias por sus respuestas. Me parece muy acertado sus
soluciones.

Un comentario...yo me di de alta en este grupo por el año 2007 o 2008.
Recuerdo que cuando escribía RFOG respondía y ya han pasado alrededor
de 3 años y mira...aquí sigue RFOG, que chido.

Gracias por sus respuestas: RFOG y Daniel Cáceres.


On 4 nov, 04:18, Daniel Cáceres wrote:
On 3 nov, 16:02, Fuy wrote:









> Saludos,

> Me encuentro con el siguiente problema. Tengo un archivo fuente y
> quiero contar cuántos ',' ';' if else while etc... hay en el archivo.

> En Java hay una clase que se llama Scanner que me puede ayudar a
> contar lo que necesito.

> En la documentación de C# no he encontrado algo parecido. Encontré lo
> siguiente: Contains

>http://msdn.microsoft.com/es-es/library/dy85x1sa(VS.80).aspx

> Y veo que eso me puede servir, pero cuando empiezo a leer el archivo y
> uso Contains me sale una excepción que dice lo siguiente:

> "Referencia a objeto no establecida como instancia de un objeto".

> Tengo lo siguiente:

>

>         StreamReader sr = new StreamReader(dir);
>                     string lineas = "";

>                     while (lineas != null)
>                     {

>                         lineas = sr.ReadLine();

>                         if (lineas.Contains(";") == true)
>                         {
>                             Console.WriteLine("LLevamos {0} token's:",
> contador);
>                             contador++;
>                         }

>                     }
>                     sr.Close();

> Conocen algún método que cuente tokens en C#?

> Atentamente
> José

Buenas, la solución más acertada para este caso creo que sería usar
expreesiones regulares. El código quedaría así:

                     using(TextReader sr = new TextReader(dir))
                     {
                         string text = sr.ReadToEnd();

                         var tokensCollection = Regex.Matches(text, ";|
while|if"); // y todos los tokens separados por |

                         Console.WriteLine("Encontrados {0}
token's:",  tokensCollection.Count);
                     }

Saludos y esperro que te sea de ayuda.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida