如何在C# 逐行读取txt数据,按照下列格式
9.1021.9013.007.3019.4016.0015.1017.6010.0017.8014.2017.0020.7017.0019.0024.1018.3013...
9.10 21.90 13.00
7.30 19.40 16.00
15.10 17.60 10.00
17.80 14.20 17.00
20.70 17.00 19.00
24.10 18.30 13.00
3.60 22.90 19.00
。。。。。(类似的)
要求第一和第二列存进一个二维数组,第三列单独存进一个一维数组,求大神解答!! 展开
7.30 19.40 16.00
15.10 17.60 10.00
17.80 14.20 17.00
20.70 17.00 19.00
24.10 18.30 13.00
3.60 22.90 19.00
。。。。。(类似的)
要求第一和第二列存进一个二维数组,第三列单独存进一个一维数组,求大神解答!! 展开
6个回答
展开全部
楼主你好~
考虑到数据间空格数不一定,数据小数位数不一定,数据最后符号不一定,有漏数据可能性等因素,建议采用正则表达式来匹配,代码如下:
// 程序最顶部添加名词空间
using System.Text.RegularExpressions;
using System.IO;
...
float[,] arr1;
float[] arr2;
void MyFun()
{
// 自行修改文件位置
string[] lines = File.ReadLines(@"C:\a.txt").ToArray<string>();
List<float> column1 = new List<float>();
List<float> column2 = new List<float>();
List<float> column3 = new List<float>();
// 正则\d+\.\d+匹配一个不限位数的小数
Regex reg = new Regex(@"\d+\.\d+");
foreach (string line in lines)
{
if (reg.Matches(line).Count == 3)
{
MatchCollection mc = reg.Matches(line);
column1.Add(float.Parse(mc[0].Value));
column2.Add(float.Parse(mc[1].Value));
column3.Add(float.Parse(mc[2].Value));
};
}
arr2 = column3.ToArray();
arr1 = new float[arr2.Length, 2];
for (int i = 0; i < arr2.Length; i++)
{
arr1[i, 0] = column1[i];
arr1[i, 1] = column2[i];
}
}
请追问~
考虑到数据间空格数不一定,数据小数位数不一定,数据最后符号不一定,有漏数据可能性等因素,建议采用正则表达式来匹配,代码如下:
// 程序最顶部添加名词空间
using System.Text.RegularExpressions;
using System.IO;
...
float[,] arr1;
float[] arr2;
void MyFun()
{
// 自行修改文件位置
string[] lines = File.ReadLines(@"C:\a.txt").ToArray<string>();
List<float> column1 = new List<float>();
List<float> column2 = new List<float>();
List<float> column3 = new List<float>();
// 正则\d+\.\d+匹配一个不限位数的小数
Regex reg = new Regex(@"\d+\.\d+");
foreach (string line in lines)
{
if (reg.Matches(line).Count == 3)
{
MatchCollection mc = reg.Matches(line);
column1.Add(float.Parse(mc[0].Value));
column2.Add(float.Parse(mc[1].Value));
column3.Add(float.Parse(mc[2].Value));
};
}
arr2 = column3.ToArray();
arr1 = new float[arr2.Length, 2];
for (int i = 0; i < arr2.Length; i++)
{
arr1[i, 0] = column1[i];
arr1[i, 1] = column2[i];
}
}
请追问~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。
2.例程:
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100],c[100];
int i=3,j=4,k=0; //第三行,第四列
FILE *fp = fopen("data.txt","r");
while(fgets(c,100,fp)){ //读入每行数据
i--;
if(i==0) strcpy(a,c); //读到第三行数据
b[k++]=c[j-1]; //把每行的那列字符拷到b中
}
b[k]=0;
printf("第%d行数据:%s\n",i,a);
printf("第%d列数据:%s\n",j,b);
fclose(fp);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
List<string[]> one = new List<string[]>();
string[] oneTemp;
List<string> two=new List<string>();
string[] array;
string line;
using (StreamReader sr = new StreamReader("C:\\aa.txt"))
{
while((line=sr.ReadLine())!=null)
{
array = line.Trim().Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
if (array.Length >= 3)
{
oneTemp = new string[2];
oneTemp[0] = array[0];
oneTemp[1] = array[1];
one.Add(oneTemp);
two.Add(array[2]);
}
}
sr.Close();
}
string[][] end1 = one.ToArray();//第一,第二列
string[] end2 = two.ToArray(); //第三列
string[] oneTemp;
List<string> two=new List<string>();
string[] array;
string line;
using (StreamReader sr = new StreamReader("C:\\aa.txt"))
{
while((line=sr.ReadLine())!=null)
{
array = line.Trim().Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
if (array.Length >= 3)
{
oneTemp = new string[2];
oneTemp[0] = array[0];
oneTemp[1] = array[1];
one.Add(oneTemp);
two.Add(array[2]);
}
}
sr.Close();
}
string[][] end1 = one.ToArray();//第一,第二列
string[] end2 = two.ToArray(); //第三列
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string[] lines = File.ReadAllLines(filename);//filename为文件所在路径
double[,] arr1 = new double[2, lines.Length];
double[] arr2 = new double[lines.Length];
for (int i = 0; i < lines.Length; i++)
{
string[] numarr = lines[i].Split(' ');
arr1[0, i] = Convert.ToDouble(numarr[0]);
arr1[1, i] = Convert.ToDouble(numarr[1]);
arr2[i] = Convert.ToDouble(numarr[2]);
}
double[,] arr1 = new double[2, lines.Length];
double[] arr2 = new double[lines.Length];
for (int i = 0; i < lines.Length; i++)
{
string[] numarr = lines[i].Split(' ');
arr1[0, i] = Convert.ToDouble(numarr[0]);
arr1[1, i] = Convert.ToDouble(numarr[1]);
arr2[i] = Convert.ToDouble(numarr[2]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[3[2]={9.10 ,21.90},{7.30,19.40},{15.10,17.60};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询