How would I do this??

  • Thread starter Thread starter Ron
  • Start date Start date
R

Ron

I want to read in a text file, I have never done this, and then I
want
to use a regular expression, because I think it would be easiest, to
go through that file line by line and pick out all the part numbers,
all of our part numbers start with AU- so what I would like to do is
read in c:\masterparts.txt and what I would really like to do is
display the whole text file in a label on the form making all text
GREY except for the part numbers, those would be highlighted in blue
or something, or if not that just display all the AU- found and the
number of times found. Can anyone help me with how to do this? thanks
 
Ron said:
I want to read in a text file, I have never done this, and then I
want
to use a regular expression, because I think it would be easiest, to
go through that file line by line and pick out all the part numbers,
all of our part numbers start with AU- so what I would like to do is
read in c:\masterparts.txt and what I would really like to do is
display the whole text file in a label on the form making all text
GREY except for the part numbers, those would be highlighted in blue
or something, or if not that just display all the AU- found and the
number of times found. Can anyone help me with how to do this? thanks

I'm sure we can help you, but we'll need more info. How are the
different Fields of your Text File separated - Commas, Spaces or other
characters? Is the Part Number always at the same position on the line
or can it be anywhere on the line? Is there more than one Part Number
per line? Is the Text File very large (say, > 500MB) or ever likely to be?

Maybe provide a few lines as an example of what you're needing to read.

ShaneO

There are 10 kinds of people - Those who understand Binary and those who
don't.
 
Yes I can provide a portion of my textfile. The textfile that we use
is always less than 2MB, after it gets that big we usually archive it
into a database.

a sample of the file:

Part number descriptions sorted by type and time built
========================================
AU-22453 Thermal paster AU-22468 Thermal paster control AU-22490
Thermal trial packs AU-22628 Control unit plates AU-22615 Paste dust
AU-226221503 NOX Connector

so what I want to do is just count the AU because I know anyhting that
has an AU will be a part. All I want is to count and display the
number of current parts in the file. I would love to read the file
in, display it in grey text in a label and highlight all the AU in
say Green and then also display the count of the AU's. But having
just a message box with the count of parts will be just fine.

thanks for any help
 
Ron said:
Yes I can provide a portion of my textfile. The textfile that we use
is always less than 2MB, after it gets that big we usually archive it
into a database.

a sample of the file:

Part number descriptions sorted by type and time built
========================================
AU-22453 Thermal paster AU-22468 Thermal paster control AU-22490
Thermal trial packs AU-22628 Control unit plates AU-22615 Paste dust
AU-226221503 NOX Connector

so what I want to do is just count the AU because I know anyhting that
has an AU will be a part. All I want is to count and display the
number of current parts in the file. I would love to read the file
in, display it in grey text in a label and highlight all the AU in
say Green and then also display the count of the AU's. But having
just a message box with the count of parts will be just fine.

thanks for any help

As a Label cannot have multi-coloured text, you will need to use a
RichTextBox. Add one to your Form, then add the following code to a
Button Click event (watch for line wrapping) -

RichTextBox1.Text =
My.Computer.FileSystem.ReadAllText("c:\cmasterparts.txt")
Dim iStartPosition, iEndPosition, iPartNumberCounter As Integer

Do
iStartPosition = InStr(iStartPosition + 1, RichTextBox1.Text, "AU-")
If iStartPosition > 0 Then
iEndPosition = InStr(iStartPosition, RichTextBox1.Text, " ")
RichTextBox1.Select(iStartPosition - 1, iEndPosition - iStartPosition)
iStartPosition = iEndPosition
RichTextBox1.SelectionColor = Color.Green
iPartNumberCounter += 1
End If
Loop Until iStartPosition = 0
MsgBox(String.Format("Number of Product Codes = {0}", iPartNumberCounter))


This should be sufficient to get you started.

Basically, it reads the entire Text File into the RichTextBox. It then
enters the Do...Loop looking for "AU-". When found, it then finds the
end of the AU- block, selects the range and changes the colour to Green.

It also counts each occurrence it finds and, when completed, displays a
MsgBox showing the counted value.

If a Part Number occurs at the very end of a line then it will look into
the following line for the End of the Part Number. There would be a
number of ways to fix this, but I've got to leave something for you to do!

It hope this helps.

ShaneO

There are 10 kinds of people - Those who understand Binary and those who
don't.
 
Part number descriptions sorted by type and time built
========================================
AU-22453 Thermal paster AU-22468 Thermal paster control AU-22490
Thermal trial packs AU-22628 Control unit plates AU-22615 Paste dust
AU-226221503 NOX Connector

so what I want to do is just count the AU because I know anyhting that
has an AU will be a part. All I want is to count and display the
number of current parts in the file. I would love to read the file
in, display it in grey text in a label and highlight all the AU in
say Green and then also display the count of the AU's. But having
just a message box with the count of parts will be just fine.

This RegEx should parse your file correctly:

(?<PartNumber>AU-[0-9]{1,})\s(?<Description>((.)(?!AU-[0-9]{1,}))+)

You can retreive the PartNumber by:

RegEx.Match(String).Groups("PartNumber").Value

or the Description with:

RegEx.Match(String).Groups("Description").Value

The RegEx is:

AU-[0-9]{1,} AU- followed by 1 or more numbers

AND

(.)(?!AU-[0-9]{1,}))+ Any Character except for AU- followed by 1 or more
numbers pattern. The "AU- followed by 1 or more numbers pattern" section
was added because I noticed your file has run on lines (i.e. each part
isn't separated by a new line).
 
Part number descriptions sorted by type and time built
========================================
AU-22453 Thermal paster AU-22468 Thermal paster control AU-22490
Thermal trial packs AU-22628 Control unit plates AU-22615 Paste dust
AU-226221503 NOX Connector

so what I want to do is just count the AU because I know anyhting that
has an AU will be a part. All I want is to count and display the
number of current parts in the file. I would love to read the file
in, display it in grey text in a label and highlight all the AU in
say Green and then also display the count of the AU's. But having
just a message box with the count of parts will be just fine.

This RegEx should parse your file correctly:

(?<PartNumber>AU-[0-9]{1,})\s(?<Description>((.)(?!AU-[0-9]{1,}))+)


Shoot looks like my RegEx doesn't match your file. Oh well, maybe someone
else will figure it out :-)
 
Back
Top