Reading .dat file data into an array

Please support our C# advertiser: Intel Parallel Studio Home
Reply

Join Date: Jan 2006
Posts: 26
Reputation: daidaiboyboy is an unknown quantity at this point 
Solved Threads: 0
daidaiboyboy daidaiboyboy is offline Offline
Light Poster

Reading .dat file data into an array

 
0
  #1
Jan 8th, 2006
Hi all... My first post in this forum... The problem is that of the String.Split method... I cant seem to get the String.Split method to work as I wanted... My objective is to try to read the data which are three columns of numbers and try to array them so that I can use them as points for contour plotting. The following is the data displayed in the file I tried to read from.

20311 20316 20321
20312 20317 20322
20313 20318 20323
20314 20319 20324
20315 20320 20325

My method is as follow:

while(objInput.Peek()>-1)
{
string strLine = objInput.ReadLine();
string [] split = strLine.Split(new Char [] {' '});
}

After which I can then initialise the split[0], split[1], split[2] etc to whatever arraylist i am going to use. However, these values are displayed as null value (blank) when I tried to console.writeline them.

The strange thing is when I edited the .dat file which I used to read the strings, and placed a comma instead of just spaces in between the words as illustrated below, the split method worked out fine when I used the following code in place of the above code.

20311 ,20316 ,20321
20312 ,20317 ,20322
20313 ,20318 ,20323
20314 ,20319 ,20324
20315 ,20320 ,20325

while(objInput.Peek()>-1)
{
string strLine = objInput.ReadLine();
string [] split = strLine.Split(new Char [] {','});
}

Can anyone help me with this problem? Did I use the String.Split method wrongly? Or what did I not do?
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 45
Reputation: _r0ckbaer is an unknown quantity at this point 
Solved Threads: 7
_r0ckbaer's Avatar
_r0ckbaer _r0ckbaer is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #2
Jan 8th, 2006
Hi, i tried out your code and it seems to work even with the spaces, however one remark: i don't know if it was your intention to initialize the split variable inside the loop...so keep in mind that it will be overwritten all the time and just keeps the latest 3 values (from the last readline)
Reply With Quote Quick reply to this message  
Join Date: Jan 2006
Posts: 26
Reputation: daidaiboyboy is an unknown quantity at this point 
Solved Threads: 0
daidaiboyboy daidaiboyboy is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #3
Jan 9th, 2006
hrm... I understand where the error comes from already. It comes from the spaces before the numbers... which I never put in my question. The actual display is as shown below:

(spaces) 20311 20316 20321
(spaces) 20312 20317 20322
(spaces) 20313 20318 20323
(spaces) 20314 20319 20324
(spaces) 20315 20320 20325

and not the following:

20311 20316 20321
20312 20317 20322
20313 20318 20323
20314 20319 20324
20315 20320 20325

So, how do I solve this kind of problem?
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 45
Reputation: _r0ckbaer is an unknown quantity at this point 
Solved Threads: 7
_r0ckbaer's Avatar
_r0ckbaer _r0ckbaer is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #4
Jan 9th, 2006
  1. StreamReader objInput = new StreamReader("C:\\values.dat", System.Text.Encoding.Default);
  2. string contents = objInput.ReadToEnd().Trim();
  3. string [] split = System.Text.RegularExpressions.Regex.Split(contents, "\\s+", RegexOptions.None);
  4. foreach (string s in split)
  5. {
  6. Console.WriteLine(s);
  7. }
Reply With Quote Quick reply to this message  
Join Date: Jan 2006
Posts: 26
Reputation: daidaiboyboy is an unknown quantity at this point 
Solved Threads: 0
daidaiboyboy daidaiboyboy is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #5
Jan 11th, 2006
Wow... Thanks alot, rOckbaer! It worked perfectly! I will now try to read them into an array. Any idea how it can be done? Its of two dimensional array, right?
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 45
Reputation: _r0ckbaer is an unknown quantity at this point 
Solved Threads: 7
_r0ckbaer's Avatar
_r0ckbaer _r0ckbaer is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #6
Jan 11th, 2006
  1. string [] split = System.Text.RegularExpressions.Regex.Split(contents, "\\s+", RegexOptions.None);
split is already a string array
Reply With Quote Quick reply to this message  
Join Date: Jan 2006
Posts: 26
Reputation: daidaiboyboy is an unknown quantity at this point 
Solved Threads: 0
daidaiboyboy daidaiboyboy is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #7
Jan 12th, 2006
Thanks again! May I know what the \\s+ means? Cant seem to find it on the web.
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 45
Reputation: _r0ckbaer is an unknown quantity at this point 
Solved Threads: 7
_r0ckbaer's Avatar
_r0ckbaer _r0ckbaer is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #8
Jan 12th, 2006
\s+ is a regular expression, the \s means to consider whitespaces and the + means to consider at least 1 occurence or more of them
Reply With Quote Quick reply to this message  
Join Date: Jan 2006
Posts: 26
Reputation: daidaiboyboy is an unknown quantity at this point 
Solved Threads: 0
daidaiboyboy daidaiboyboy is offline Offline
Light Poster

Re: Reading .dat file data into an array

 
0
  #9
Jan 13th, 2006
Ah.... IcIc... Thats exactly what I need! No wonder it worked perfectly!

Thanks alot!
Reply With Quote Quick reply to this message  
Join Date: Oct 2007
Posts: 3
Reputation: tphuynh is an unknown quantity at this point 
Solved Threads: 0
tphuynh tphuynh is offline Offline
Newbie Poster

Re: Reading .dat file data into an array

 
0
  #10
Oct 24th, 2007
Originally Posted by _r0ckbaer View Post
  1. StreamReader objInput = new StreamReader("C:\\values.dat", System.Text.Encoding.Default);
  2. string contents = objInput.ReadToEnd().Trim();
  3. string [] split = System.Text.RegularExpressions.Regex.Split(contents, "\\s+", RegexOptions.None);
  4. foreach (string s in split)
  5. {
  6. Console.WriteLine(s);
  7. }
Hi _r0ckbaer,

I don't know if you are still around...

What do I need to modify in the "System.Text.RegularExpressions.Regex.Split(contents, "\\s+", RegexOptions.None);" so the string will also expect whitespaces?

For example, in the .dat file you have:

Hello Word Test1 Test2 Test3

If you noticed, I have whitespaces between each words, I want to keep that.

so

string[0] = Hello
string[1] = " "
string[2] = Word
string[3] = " "
string[4] = Test1
string[5] = " "

..
..... and so on. Can this be done using the same Regex?
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the C# Forum
Thread Tools Search this Thread



Tag cloud for C#
About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC