DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C# (http://www.daniweb.com/forums/forum61.html)
-   -   Reading .dat file data into an array (http://www.daniweb.com/forums/thread37710.html)

daidaiboyboy Jan 8th, 2006 1:55 am
Reading .dat file data into an array
 
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?

_r0ckbaer Jan 8th, 2006 1:58 pm
Re: Reading .dat file data into an array
 
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)

daidaiboyboy Jan 9th, 2006 1:18 am
Re: Reading .dat file data into an array
 
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?

_r0ckbaer Jan 9th, 2006 2:35 am
Re: Reading .dat file data into an array
 
StreamReader objInput = new StreamReader("C:\\values.dat", System.Text.Encoding.Default);
string contents = objInput.ReadToEnd().Trim();
string [] split = System.Text.RegularExpressions.Regex.Split(contents, "\\s+", RegexOptions.None);                       
foreach (string s in split)
{
        Console.WriteLine(s);
}

daidaiboyboy Jan 11th, 2006 4:48 am
Re: Reading .dat file data into an array
 
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?

_r0ckbaer Jan 11th, 2006 3:39 pm
Re: Reading .dat file data into an array
 
string [] split = System.Text.RegularExpressions.Regex.Split(contents, "\\s+", RegexOptions.None);
split is already a string array

daidaiboyboy Jan 12th, 2006 12:26 am
Re: Reading .dat file data into an array
 
Thanks again! May I know what the \\s+ means? Cant seem to find it on the web.

_r0ckbaer Jan 12th, 2006 3:56 pm
Re: Reading .dat file data into an array
 
\s+ is a regular expression, the \s means to consider whitespaces and the + means to consider at least 1 occurence or more of them

daidaiboyboy Jan 13th, 2006 12:28 am
Re: Reading .dat file data into an array
 
Ah.... IcIc... Thats exactly what I need! No wonder it worked perfectly!

Thanks alot!

tphuynh Oct 24th, 2007 7:19 pm
Re: Reading .dat file data into an array
 
Quote:

Originally Posted by _r0ckbaer (Post 184177)
StreamReader objInput = new StreamReader("C:\\values.dat", System.Text.Encoding.Default);
string contents = objInput.ReadToEnd().Trim();
string [] split = System.Text.RegularExpressions.Regex.Split(contents, "\\s+", RegexOptions.None);                       
foreach (string s in split)
{
        Console.WriteLine(s);
}

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?


All times are GMT -4. The time now is 4:52 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC