大哥们。。我的文本格式是这样的
1.1,2,3
3,2.3,1
1,1,1
3,4,5.6
.....
.....(N行。(大概10000行左右,具体行数不固定。。)
怎么样用正则表达式将里面所有的数字赋给数组啊。。能给段代码并解释下好吗,谢谢。。(先叩谢了。。)
1.1,2,3
3,2.3,1
1,1,1
3,4,5.6
.....
.....(N行。(大概10000行左右,具体行数不固定。。)
怎么样用正则表达式将里面所有的数字赋给数组啊。。能给段代码并解释下好吗,谢谢。。(先叩谢了。。)
openFileDialog1.Filter = "Text(*.txt)|*.txt|Word(*.doc)|*doc|all File(*.*)|*.*|TXL(*.Txl)|*.Txl";
DialogResult r = openFileDialog1.ShowDialog();
string filepath = openFileDialog1.FileName;
if (r == DialogResult.OK)
{
System.IO.FileStream fs;
fs = new FileStream(openFileDialog1.FileName,System.IO.FileMode.Open);
BinaryReader sr = new BinaryReader(fs);
string ss = (sr.ReadChar()).ToString();
while(ss!="\r") //条件
{
textBox1.Text+=ss;
ss = (sr.ReadChar()).ToString();
} }
文本。。
1.1,2,3
3,2.3,1
1,1,1
3,4,5.6
....
结果
a[1]=1.1
a[2]=2,a[3]=3,a[4]=3,a[5]=2.3.......,上面的方法分行读出来我还是需要进行SPLIT啊。。不用SPLIT有什么方法可以
得到我想要的结果啊。
不是什么都正则好的
using (StreamReader sr = new StreamReader(sfilename))
{
string text = sr.ReadToEnd();
string[] temp = text.Split("\n".ToCharArray());
foreach (string str in temp)
{
if (str == "") //文本最后几行可能是空行
{
}
else
{
//MessageBox.Show(aryline[0]);
string[] line = str.Split(',');
X = Convert.ToDouble(line[0]) / 1000;
Y = Convert.ToDouble(line[1]) / 1000;
Z = Convert.ToDouble(line[2]) / 1000;
.............
文本文件大概500行就需要2分钟。。我也不知道错误出在哪里了(我电脑2G内存。。不会是我的电脑问题。。)
10000行的数据赋给数组,存数据库里面用sql查询起来都很慢,别说存到一个数组里面了.
先考虑下效率问题吧
{
System.IO.StreamReader mysr = new System.IO.StreamReader(@"c:\aa.txt");
DateTime n = DateTime.Now;
richTextBox1.AppendText(n.ToString()+"\n");
while((strline = mysr.ReadLine()) != null)
{
aryline = strline.Split(new char[]{','});
x= Convert.ToDouble(aryline[0])/1000; //这个数据我在其他地方会使用到
y= Convert.ToDouble(aryline[1])/1000;
z= Convert.ToDouble(aryline[2])/1000;
Console.WriteLine("{0},{1},{2}",x,y,z);
}
DateTime tt = DateTime.Now;
richTextBox1.AppendText(tt.ToString()+"\n");
richTextBox1.AppendText((tt-n).ToString()+"\n");
}你可以验证一下
时间很短
2008-8-1 14:02:46
2008-8-1 14:02:56
00:00:10.5468750
但是上面是有Console输出的,如果这行去掉,那么执行时间如下
2008-8-1 13:58:06
2008-8-1 13:58:06
00:00:00.3437500一秒都不要就完成了所有的操作。
re = New Regex("^(\d+\.\d+)|(\d+)$")
这是匹配你文本的正则