Visual Basic.NET - Leer Columnas de un txt

   
Vista:
Imágen de perfil de Marcelo

Leer Columnas de un txt

Publicado por Marcelo (6 intervenciones) el 27/10/2014 12:47:14
Hola buenas, me dieron un trabajo sobre hacer una aplicación de una "sopa de numero". La cual consiste en leer números de un archivo txt con "x" números. Para leer de izquierda a derecha por cada fila no tengo problema con entradas de uno o mas dígitos, pero al momento de crear el método para leer por fila solo logro hacer que busque con entradas de un solo dígito, esto es porque el método solo lee una fila. y ahí nace mi duda: Como logro leer la columna completa ?


Ej txt:

546532
546554
456524

Si alguien puede ayudarme lo agradecería mucho.

Saludos...
Marcelo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo

Leer Columnas de un txt

Publicado por giancarlo (280 intervenciones) el 27/10/2014 15:17:49
1
2
3
4
5
6
7
8
9
10
11
Dim lista As New List(Of String)
        If IO.File.Exists(archivo) Then
            Dim sreader As New IO.StreamReader(archivo, System.Text.Encoding.Default)
            Dim fila As String = sreader.ReadLine 'lee la primera linea
 
            While fila IsNot Nothing'seguira leendo siempre en cuando exista una linea por leer
                lista.Add(fila.ToString.Trim(""""))
                fila = sreader.ReadLine
            End While
            sreader.Close()
        End If

para separar las columnas, puedes usar la funcion split, en la que obtendras una matriz, o declara como char o arraychar creo en lugar de string
dim separado() as string=lineaTexto.split("|")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Marcelo

Leer Columnas de un txt

Publicado por Marcelo (6 intervenciones) el 28/10/2014 01:50:51
Tengo este código para Buscar Horizontalmente, como podría añadir el split en el?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Public Function BuscarVer(ByRef NumeroBuscado As String) As String
        Dim al As StreamReader = New StreamReader(nombreArchivo)
        Dim largo As Integer = NumeroBuscado.Length
        Dim registro As String
 
        Dim u As Integer = 0
        Dim d As Integer = 0
        Dim nveces As String = ""
        registro = al.ReadLine()
        If largo = 1 Then
            While registro <> ""
                For i = 1 To registro.Length - 1 'pifia
                    If NumeroBuscado = registro.Substring(i, largo) Then
                        u += 1
 
                    End If
                Next
                registro = al.ReadLine()
            End While
        Else
            While registro <> ""
                For i = 1 To registro.Length - 2  'pifia
                    nveces = StrReverse(NumeroBuscado)
                    If NumeroBuscado = registro.Substring(i, largo) Then
                        u += 1
                    End If
                    If nveces = registro.Substring(i, largo) Then
                        d += 1
                    End If
                Next
                registro = al.ReadLine()
            End While
        End If
 
 
        al.Close()
        Return CInt(u + d)
 
    End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo

Leer Columnas de un txt

Publicado por giancarlo (280 intervenciones) el 28/10/2014 16:01:36
Al parecer no hay lugar de separacion, asi que no se usaria split, si no me equivoco, necesitas saber si en una fila hay una letra o cadena de texto, asi que usarias contains("") devuelve un tipo de valor boolean(true-false)

1
2
3
4
5
if cadena.Contains("ab") then'si en la variable cadena contiene el texto"ab"
msgbox("Si se encuentra")
else
msgbox("No se encuentra")
end if


viendo tu código y reelendo el asunto principal, entend lo siguiente:
en el archivo de texto hay numeros(o letras)
entonces el programa debe leer fila por fila
en cada fila debe buscar un caracter o cadena de estos(o numeros), al parecer en modo inverso tambien,ejemplo si se busca "ABC", debe buscar "CBA"
una vez encontrado lo que se busca, solo se deben contar cuantas veces se encontro en todo el archivo de texto.

basandome en eso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim archivo, fila, buscar As String
        Dim encontrado, encontradoInverso As Integer
        archivo = "" 'archivo a buscar
        buscar = "" 'cadena o numeros a buscar
 
        If IO.File.Exists(archivo) Then
            Dim sreader As New IO.StreamReader(archivo, System.Text.Encoding.Default)
            fila = sreader.ReadLine 'lee la primera linea
            encontrado = 0
            encontradoInverso = 0
            While fila IsNot Nothing 'seguira leendo siempre en cuando exista una linea por leer
                If fila.Contains(buscar) Then
                    encontrado += 1
                End If
                If StrReverse(fila).Contains(buscar) Then
                    encontrado += 1
                End If
                fila = sreader.ReadLine
            End While
            sreader.Close()
        End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Marcelo

Leer Columnas de un txt

Publicado por Marcelo (6 intervenciones) el 28/10/2014 21:44:18
te basaste bien, mi amigo. Para leer filas no tengo ningún problema, mi problema llega al momento de intentar leer columnas completas de arriba a abajo y viceversa.
Intente aplicar el split que me indicaste pero solo me complico mas las cosas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo

Leer Columnas de un txt

Publicado por giancarlo (280 intervenciones) el 28/10/2014 22:05:09
--lo que hace el split es separar en una matriz una cadena de texto, segun un valor, por ejemplo
fila="col1,col2,col3"
si uso split
separado() as string=fila.split(",")

separare la cadena, el separador sera la coma:
separado(0)="col1"
separado(1)="col2"
separado(2)="col3"
y asi sucesivamente, tus filas no tienen como separar(o no lo pusiste). de esta manera puedes separar por comas,tabulacion,|,etc.

--si quieres buscar un caracter(es) en una cadena de texto, puedes usar el contains, que te di un ejemplo mas arriba, para esto, ya no habria necesidad de usar el split.

considerando que la sopa de numero solo debe tener un caracter(o numero) por columna, puedes hacer lo siguinete para no usar el split:

cadena.contains("texto a buscar") 'devuelve true o false
cadena.indexof("caracter")'indice el indice en que se encutra el caracter que buscas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar