problem with data.Split(vbCrLf)

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

Ron

Hello,

I am trying to parse a string on the newline char. I
guess vbCrLf is a string constant. How can I parse my
string - data - on the newline char?
....
data += ASCII.GetString(buffer, 0, bytesRead)
....
Dim parts() As String = data.Split(vbCrLf)

Thanks,
Ron
 
Hi Ron,

I think the Split method of the string object either takes a single char or
an array of chars. If you use the latter overload, .NET will assume that
any of the chars in the array qualify as a separating character, hence if
you pass in CrLf it decides that either Cr OR Lf is a separator. This means
you'll end up with a blank string for every other element in the array of
parts().

The way I always use is the good ol' fashioned VB Split function, as this
does exactly what you want, eg:

Dim parts() As String = Split(data, vbCrLf)

Regards,
Alex Clark
 
You can use a StringReader to read a string line by line:

Dim sr As new StringReader(sStringToRead)
while sr.peek <> -1
Dim s as string = sr.ReadLine
'Do something with s here
end While

Perhaps this will help you
 
Thanks. I thought about that, but I thought I would check
to see if maybe I was missing something in vb.net. Guess
I have to import the Microsoft.VisualBasice namespace?

Thanks again,
Ron
 
It took me a while to see what you were doing. This is
pretty cool. I will give that a try. I am trying to
steer away from using Microsoft.VisualBasic for the sake
of using DotNet functionality. I will give this a try,
otherwise, I will go with the good'ol VB Split function.

Thanks,
Ron
 
Ron said:
Thanks. I thought about that, but I thought I would check
to see if maybe I was missing something in vb.net. Guess
I have to import the Microsoft.VisualBasice namespace?

This should be done automatically in VB.NET projects. 'Split' is member of
the 'Microsoft.VisualBasic.Strings' module.
 
Alex,

Thanks for that, it is obvious, however I did never understand it.

Cor
 
you could always remove the CR using string.remove(vbcr) and then split on
LF only - eg string.split(vblf).

ie
dim mystringarray() as string =mystring.remove(vbCr).split(vbLf)

Hope this helps..
Simon
 
Ron,
As Alex stated, String.Split splits based on individual characters. If you
want to split based on words I would recommend Strings.Split or RegEx.Split.

There are three Split functions in .NET:

Use Microsoft.VisualBasic.Strings.Split if you need to split a string based
on a specific word (string). It is the Split function from VB6.

Use System.String.Split if you need to split a string based on a collection
of specific characters. Each individual character is its own delimiter.

Use System.Text.RegularExpressions.RegEx.Split to split based
on matching patterns.


NOTE: Microsoft.VisualBasic *is* "DotNet functionality"! There is little
real reason to avoid it altogether. Some classes, such as
Microsoft.VisualBasic.Collection, I avoid altogether as most of the time it
is TOO general. I try not to mix Microsoft.VisualBasic.Strings functions
with System.String methods that take or return indexes, as VB.Strings uses
base 1 indexes, while System.String uses base 0 indexes, and this mixing
could lead to obscure bugs... VB.Split is one method I will use as
System.String currently does not have an actual equivalent (VS.NET 2005, aka
Whidbey, due out later in 2005, does have a String.Split
http://msdn2.microsoft.com/library/tabh47cf.aspx method that works on
words).

Hope this helps
Jay
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top