c# 从文本文件读指定数据并显示到textbox。

yongxing119 2015-01-06 07:01:19
文本地址: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)的时候也报错。
...全文
908 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongxing119 2015-01-07
  • 打赏
  • 举报
回复
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]; } } 谢谢各位啊,经过测试这个可以用,问题解决了。 我的代码问题好像出在File.Readalllines那里,有时候能用有时候不能用, 好像跟文件格式有关系,读unix+gb2313或者utf8 w/o BOM 的文件要报错, 读utf8 或者 windows+gb2313的没有问题。 我还是用streamreader好了。
feng_185306010 2015-01-07
  • 打赏
  • 举报
回复
读取文本文件数据到TextBox控件显示 protected void Button1_Click(object sender, EventArgs e) { StreamReader SReader = new StreamReader(TextBox1.Text, Encoding.Default);//创建StreamReader实例 TextBox2.Text = SReader.ReadToEnd();//读取文件全部内容 SReader.Close(); }
smthgdin_020 2015-01-06
  • 打赏
  • 举报
回复
按照2楼那样就行了。 你在这里: for (int x = 0; x < 4; x++) { st1 = st1.Replace(" ", " "); } st1 = st1.Trim() ; //清除多余空格 string[] str2=st1.Split(' '); //将字符串st1转化为数组str2 思路有点乱。你可以设置断点后 跟踪下str2的内容。
江南小鱼 2015-01-06
  • 打赏
  • 举报
回复
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;
                }
               }
            }
  • 打赏
  • 举报
回复
你这个是字符串错误了 我看你的代码是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]);//你要的位置
     }
}
wind_cloud2011 2015-01-06
  • 打赏
  • 举报
回复
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];
}


}
yongxing119 2015-01-06
  • 打赏
  • 举报
回复
哪位大侠,神圣,高人谁能帮帮我啊。 我才开始学编程,要做一个文本查询程序,卡这里卡一天了,周围没几个会编程的,问别人都不知道要崩溃了。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧