c# 从文本文件读指定数据并显示到textbox。该怎么处理
c# 从文本文件读指定数据并显示到textbox。
文本地址:d:\1.txt
文本内容:
aaaaa
12345 k
aaa bbb ccc ddd eee
ggg
目标:将有“12345”行的下一行的第四组数输入到textbox1。
我的代码:
private void b1_Click(object sender, EventArgs e) //按查询键
{
string[] str1 = File.ReadAllLines(@"d:\1.txt"); //读文件到str1
int f=0;int a=0;string st1=" ";
while (f < 1) //找到“12345”后终止循环
{
if (str1[a].Contains("12345")) f = f + 1;
if (str1[a].Contains("12345"))
st1 = str1[a+1]; //将“12345”的下一行写入st1
for (int x = 0; x < 4; x++) { st1 = st1.Replace(" ", " "); }
st1 = st1.Trim() ; //清除多余空格
string[] str2=st1.Split(' '); //将字符串st1转化为数组str2
textBox1.Text = str2[3]; //将str2的第三组数写入txtbox1
a = a + 1;
}
}
我的错误提示:
索引超出了数组界限 textBox1.Text = str2[0]; 是能看到第一组数“aaa",改成str2[1]的时候就报错了。
string st2=st1.substring(1)的时候也报错。
------解决思路----------------------
StreamReader sr = new StreamReader(@"d:\1.txt", Encoding.Default);
String line;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("12345"))
{
string s = sr.ReadLine();
string[] sline = s.Trim().Split(' ');
textBox1.Text = sline[3];
}
}
------解决思路----------------------
你这个是字符串错误了
我看你的代码是12345作为硬性判断
我来写的话就是
------解决思路----------------------
------解决思路----------------------
按照2楼那样就行了。
你在这里:
for (int x = 0; x < 4; x++) { st1 = st1.Replace(" ", " "); }
st1 = st1.Trim() ; //清除多余空格
string[] str2=st1.Split(' '); //将字符串st1转化为数组str2
思路有点乱。你可以设置断点后 跟踪下str2的内容。
文本地址:d:\1.txt
文本内容:
aaaaa
12345 k
aaa bbb ccc ddd eee
ggg
目标:将有“12345”行的下一行的第四组数输入到textbox1。
我的代码:
private void b1_Click(object sender, EventArgs e) //按查询键
{
string[] str1 = File.ReadAllLines(@"d:\1.txt"); //读文件到str1
int f=0;int a=0;string st1=" ";
while (f < 1) //找到“12345”后终止循环
{
if (str1[a].Contains("12345")) f = f + 1;
if (str1[a].Contains("12345"))
st1 = str1[a+1]; //将“12345”的下一行写入st1
for (int x = 0; x < 4; x++) { st1 = st1.Replace(" ", " "); }
st1 = st1.Trim() ; //清除多余空格
string[] str2=st1.Split(' '); //将字符串st1转化为数组str2
textBox1.Text = str2[3]; //将str2的第三组数写入txtbox1
a = a + 1;
}
}
我的错误提示:
索引超出了数组界限 textBox1.Text = str2[0]; 是能看到第一组数“aaa",改成str2[1]的时候就报错了。
string st2=st1.substring(1)的时候也报错。
------解决思路----------------------
StreamReader sr = new StreamReader(@"d:\1.txt", Encoding.Default);
String line;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("12345"))
{
string s = sr.ReadLine();
string[] sline = s.Trim().Split(' ');
textBox1.Text = sline[3];
}
}
------解决思路----------------------
你这个是字符串错误了
我看你的代码是12345作为硬性判断
我来写的话就是
string str=@"aaaaa
12345 k
aaa bbb ccc ddd eee
ggg";
var arr=str.Split("\r");
if(arr.Length>=3)
{
arr = Regex.Split(arr[2].Trim(),"\\s");
if(arr.Length>=4)
{
Console.WriteLine(arr[3]);//你要的位置
}
}
------解决思路----------------------
using(StreamReader sr = new StreamReader(@"d:\1.txt", Encoding.Default))
{
String line;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("12345"))
{
string s = sr.ReadLine();
string[] sline = s.Trim().Split(' ');
textBox1.Text = sline[3];
break;
}
}
}
------解决思路----------------------
按照2楼那样就行了。
你在这里:
for (int x = 0; x < 4; x++) { st1 = st1.Replace(" ", " "); }
st1 = st1.Trim() ; //清除多余空格
string[] str2=st1.Split(' '); //将字符串st1转化为数组str2
思路有点乱。你可以设置断点后 跟踪下str2的内容。