Solved

VB.NET - Process a block of text line-by-line

Posted on 2015-02-11
1
258 Views
Last Modified: 2015-02-11
I have blocks of text that I need to process line-by-line. I'm accustomed to using the FileStream and ReadLine methods, but those work on files read from disc, it seems, and I can't translate that over to my need.

The textblocks look something like this, although they are much, much larger in the real world:
//STX12//830CATMF                                           SC
13MF CRTT Dir Global
14Z Z
15+00000000002C150306
15+00000000001D150317
15+00000000001D150416
//STX12//830MORTON      20150210064507 0411                            CAR
14Y Z
15+00000000028C150715
//STX12//830MORTON      20150210064506 0411                            CAR
01050411                          SH150401151202150209HESO51218
14Y Z
15+00000000040C150401
15+00000000040C150422
15+00000000040C150722

Open in new window

I'm breaking them on the lines beginning with "//STX12//", and I need to read each of those sub-blocks line-by-line. I see where .NET Framework 4.5 has the Text.ReadLines method, but I cannot require my client to upgrade to that framework.

What's the most efficient way to read a block of text line by line? Can I somehow "insert" that block of text into a FileStream object, and then use the methods there?
0
Comment
1 Comment
 
LVL 84

Accepted Solution

by:
Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 0 total points
Comment Utility
I found a way to do this using the StringBuilder class:
'/ Read the file from disc
Dim fil As New StreamReader(FileIn)
Dim file As String = fil.ReadToEnd
'/ Break it into chunks
Dim files() As String = Strings.Split(file, "//STX12//")
  '/ loop through the "chunks"
  For i As Integer = 0 To files.GetUpperBound(0)
	'/ get the first "chunk" into a string variable
    Dim edifile As String = files(i)
    If edifile.Length > 0 Then
		'/ use StringReader to get the "chunk" into the object
        Dim block As New StringReader(edifile)
		'/ use methods of the StringReader object to move through the lines
        Do Until block.Peek = -1
            Dim s As String = block.ReadLine
			< do stuff with line here>
		Loop
	End If
Next i

Open in new window

0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Suggested Solutions

This article will show, step by step, how to integrate R code into a R Sweave document
If you’re thinking to yourself “That description sounds a lot like two people doing the work that one could accomplish,” you’re not alone.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now