sábado, 21 de junio de 2008

Ejercicios para aprender a programar - Manipulación de archivos

Un aspecto que es importante para un desarrollador es el que su sistema interactue con otros sistemas y muchas veces debido al escaso diseño de las aplicaciones estas no presentan interfaces de comunicación adecuadas, si bien estándares actuales como XML o JSON pretenden resolver esta problemática, lo cierto es que hay un sin fin de aplicaciones comerciales y diseñadas a la medida que no facilitan este tipo de tareas.

Personalmente he sufrido este problema y a veces lo que tienes para trabajar es un poderoso y siempre refinado archivo .txt ñ_ñ, así es mi estimado blogescucha, nada de WPF ni flex, nada agradable a la vista sólo un montón de controles en una forma (muerte a VB6!!).

En fin, la tarea que hay que lograr...

OBJETIVO: Contar y señalar las palabras que estén en mayúsculas (toda la palabra) en un archivo y mostrarlas en la pantalla (Con fines de simplicidad el archivo ya estará creado y su ruta se sabrá A priori a cualquier línea de código)

CODIGO:

using System;

using System.Text;

using System.IO;

using System.Collections.Generic;

 

namespace FileManipulation

{

    class Program

    {

        static void Main(string[] args)

        {

            String filename=@"C:\TestFile.txt";

            String currentLine;

            String[] dividedLine;

            StreamReader reader;

            String currentWord;

            List<String> pickedWords= new List<string>();

 

            //El stream reader lee los caracteres que vienen en un stream

            //de acuerdo a un encoding determinado. El método OpenText

            //de la clase File nos trae un StreamReader en encoding

            //UTF-8

            reader = File.OpenText(filename);

            currentLine = reader.ReadLine();

            while (currentLine != null)

            {

                dividedLine = currentLine.Split(' ');

                for (int i = 0; i < dividedLine.Length; i++)

                {

                    currentWord = dividedLine[i];

                    if (currentWord.Equals(currentWord.ToUpperInvariant()))

                        pickedWords.Add(currentWord);

                }

                currentLine = reader.ReadLine();

            }

            Console.WriteLine("Palabras en mayúsculas");

            foreach (String item in pickedWords)

            {

                Console.WriteLine(item);

            }

            Console.WriteLine(pickedWords.Count);

            Console.Read();

        }

    }

}

 

Como ya saben, siempre son bienvenidas otras soluciones y la aquí mostrada es sólo una que intenta ser pedagógica dentro de lo que su servidor puede serlo ñ_ñ.

Saludos .

No hay comentarios.: