email在text中分类、分行输出(求c#代码)

阳光游子 2010-10-25 06:46:03
access数据表中存有很多Email地址,有qq的、126的、163的,等等;很乱;

现在想把他们分类、分行输出到text文档中,要求如下:
1。将Email地址分成4类输出:qq,126,163,其它(分别存放到4个text文档中);
2。然后在每个text文档中分行显示:每行5个Email地址,每个email之间用分号“;”隔开;


在asp.net页面中操作即可。
本人转行很久了,现在没技术可言,所以在这求个现成代码,见笑了~!
...全文
306 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
阳光游子 2010-10-27
  • 打赏
  • 举报
回复
太棒了,学习了~!
谢谢~!
dalmeeme 2010-10-26
  • 打赏
  • 举报
回复
using System;
using System.Data.OleDb;
using System.Text;
using System.IO;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + Server.MapPath("App_Data/用户.mdb");
conn.Open();
string strSQL = "select distinct email from 邮箱";//从1234表中选择不重复的邮箱地址
OleDbCommand com = new OleDbCommand(strSQL, conn);
OleDbDataReader dr = com.ExecuteReader();
StringBuilder sbQQ = new StringBuilder();
StringBuilder sb126 = new StringBuilder();
StringBuilder sb163 = new StringBuilder();
StringBuilder sbOther = new StringBuilder();
int n1,n2,n3,n4;
n1 = n2 = n3 = n4=0;
while (dr.Read())
{
string email = dr["email"].ToString().Trim();
if (email.Contains("@qq.com"))
{
n1++;
sbQQ.Append(email);
sbQQ.Append(';');
if (n1 == 5)
{
sbQQ.Append("\r\n");
n1 = 0;
}
continue;
}
if (email.Contains("@126.com"))
{
n2++;
sb126.Append(email);
sb126.Append(';');
if (n2 == 5)
{
sb126.Append("\r\n");
n2 = 0;
}
continue;
}
if (email.Contains("@163.com"))
{
n3++;
sb163.Append(email);
sb163.Append(';');
if (n3 == 5)
{
sb163.Append("\r\n");
n3 = 0;
}
continue;
}
{
n4++;
sbOther.Append(email);
sbOther.Append(';');
if (n4 == 5)
{
sbOther.Append("\r\n");
n4 = 0;
}
}
}
dr.Close();
WriteFile(sbQQ,"qq邮箱.txt");
WriteFile(sb126,"126邮箱.txt");
WriteFile(sb163,"163邮箱.txt");
WriteFile(sbOther,"其他邮箱.txt");
}
protected void WriteFile(StringBuilder Xsb,string fileName)
{
FileInfo f = new FileInfo(Server.MapPath("~") + "/"+fileName);
StreamWriter writer = f.AppendText();
writer.Write(Xsb);
writer.Close();
}
}
阳光游子 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 dalmeeme 的回复:]
直接生成在网站根目录下。
[/Quote]



嗯,好了。
能帮我修改一下上面的语句吗,把163,126,其它邮箱这三项加上去,最终输出四个txt文件。我自己试了好几种语句,做不来,谢谢啦~!
阳光游子 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 huangwenquan123 的回复:]
这个要添加引用using System.IO
[/Quote]

这知道,已添加过。
huangwenquan123 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 dalmeeme 的回复:]
17楼:倒数第四句应改为:FileInfo f = new FileInfo(Server.MapPath("~")+"/qq邮箱.txt");
运行后在解决方案管理器中点“刷新”可以看到。
[/Quote]up

FileInfo f = new FileInfo("../qq邮箱.txt");
//路径不对!
FileInfo f = new FileInfo(Server.MapPath("~")+"/qq邮箱.txt");
dalmeeme 2010-10-26
  • 打赏
  • 举报
回复
直接生成在网站根目录下。
dalmeeme 2010-10-26
  • 打赏
  • 举报
回复
17楼:倒数第四句应改为:FileInfo f = new FileInfo(Server.MapPath("~")+"/qq邮箱.txt");
运行后在解决方案管理器中点“刷新”可以看到。
阳光游子 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dalmeeme 的回复:]
以qq邮箱为例,这里用了数据库通用类。

C# code
OleDbData md = new OleDbData("select * from 邮箱");
md.ExecuteReader();
StringBuilder sb = new StringBuilder();
int n = 0;
whi……
[/Quote]


我修改了一下,现在只能在页面中显示,但是没有生成相应的txt文件和,能帮我看看么?
======================================================================
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;
using System.Text;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + Server.MapPath("App_Data/email.mdb");
conn.Open();
string strSQL = "select distinct email from 1234";//从1234表中选择不重复的邮箱地址
OleDbCommand com = new OleDbCommand(strSQL, conn);
OleDbDataReader dr = com.ExecuteReader();

StringBuilder sb = new StringBuilder();
int n = 0;
while (dr.Read())
{
string email = dr["email"].ToString().Trim();
if (email.Contains("@qq.com"))
{
n++;
sb.Append(email);
sb.Append(';');
TextBox1.Text = sb.ToString(); //在页面显示
if (n == 5)
{
sb.Append("\r\n");
n = 0;
}

}


}
dr.Close();
FileInfo f = new FileInfo("../qq邮箱.txt");
StreamWriter writer = f.AppendText();
writer.Write(sb);
writer.Close();

}
}
阳光游子 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 huangwenquan123 的回复:]
这个要添加引用using System.IO
[/Quote]



完整代码如下,但是没有任何输出,能帮我分析一下吗,谢谢~!:
===================================================
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Text;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;



public partial class _Default : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{




}
protected void Button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + Server.MapPath("App_Data/email.mdb");
conn.Open();
string strSQL = "select distinct email from 1234";
OleDbCommand com = new OleDbCommand(strSQL, conn);
OleDbDataReader dr = com.ExecuteReader();

string path126 = "126.txt";
string pathqq = "qq.txt";

//...其他路径
while (dr.Read())
{
if (dr["Email"].ToString().IndexOf("@126") != -1)
{
if (!File.Exists(path126))
File.WriteAllText(path126, dr["Email"] + ";", Encoding.UTF8);
else
File.AppendAllText(path126, dr["Email"] + ";", Encoding.UTF8);
}
if (dr["Email"].ToString().IndexOf("@qq") != -1)
{
if (!File.Exists(pathqq))
File.WriteAllText(pathqq, dr["Email"] + ";", Encoding.UTF8);
else
File.AppendAllText(pathqq, dr["Email"] + ";", Encoding.UTF8);
}
//...其他类似
}
//然后在分别读取.txt按;分割
string str = File.ReadAllText(path126, Encoding.UTF8);
string[] result = str.Split(';');
System.Text.StringBuilder sb126 = new System.Text.StringBuilder();
System.Text.StringBuilder sbqq = new System.Text.StringBuilder();

//..其他类似
for (int i = 0; i <result.Length ; i++)
{
if (i % 5 == 0)
sb126.Append(result[i].ToString() + "</br>");
else
sb126.Append(result[i].ToString());
}
for (int j = 0; j < result.Length; j++)
{
if (j % 5 == 0)
sb126.Append(result[j].ToString() + "</br>");
else
sb126.Append(result[j].ToString());
}


TextBox TextBox126 = new TextBox();
TextBox TextBoxqq = new TextBox();

TextBox126.Text = sb126.ToString();
TextBoxqq.Text = sbqq.ToString();


}
}
huangwenquan123 2010-10-25
  • 打赏
  • 举报
回复
这个要添加引用using System.IO
阳光游子 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 huangwenquan123 的回复:]
额 大小写要注意下IndexOf,有些我没注意大小写lz记得转换下

lz可结合8楼!存进去的时候就判断下!这样就不用取的时候在分割判断
[/Quote]


嗯。
到了下面这行代码时,又提示:“CS0103: 当前上下文中不存在名称“File”

if (!File.Exist(path))
File.WriteAllText(path, dr["Email"] + ";", Encoding.UTF8);
huangwenquan123 2010-10-25
  • 打赏
  • 举报
回复
额 大小写要注意下IndexOf,有些我没注意大小写lz记得转换下

lz可结合8楼!存进去的时候就判断下!这样就不用取的时候在分割判断
阳光游子 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 huangwenquan123 的回复:]
C# code

//通过执行sql语句返回一个SqlDataReader
SqlDataReader dr = Sqlhelp.ExecudeterReader("sql语句");
string path126 = "126.txt";
string pathqq= "qq.txt";
//...其他路径
while(dr.Read())
{
if(dr["Email"].……
[/Quote]


编译器错误消息: CS1061: “string”不包含“indexOf”的定义,并且找不到可接受类型为“string”的第一个参数的扩展方法“indexOf”(是否缺少 using 指令或程序集引用?)

这个错误怎么解决呢?
huangwenquan123 2010-10-25
  • 打赏
  • 举报
回复

//通过执行sql语句返回一个SqlDataReader
SqlDataReader dr = Sqlhelp.ExecudeterReader("sql语句");
string path126 = "126.txt";
string pathqq= "qq.txt";
//...其他路径
while(dr.Read())
{
if(dr["Email"].ToString().indexOf("@126")!=-1)
{
if(!File.Exist(path))
File.WriteAllText(path, dr["Email"]+";", Encoding.UTF8);
else
File.AppendAllText(path,dr["Email"]+";",Encoding.UTF8);
}
if(dr["Email"].ToString().indexOf("@qq")!=-1)
{
if(!File.Exist(path))
File.WriteAllText(path, dr["Email"]+";", Encoding.UTF8);
else
File.AppendAllText(path,dr["Email"]+";",Encoding.UTF8);
}
//...其他类似
}
//然后在分别读取.txt按;分割
string str = File.ReadAllText(path126, Encoding.UTF8);
string[] result = str.split(';');
StringBuilder sb126 = new StringBuilder();
StringBuilder sbqq = new StringBuilder();
//..其他类似
for(int i=0;i<result.length;i++)
{
if(i%5==0)
sb.append(result[i].ToString()+"</br>");
else
sb.append(result[i].ToString());
}
TextBox126.Text = sb126.ToString();
Textboxqq.Text = sbqq.ToString();
//家里没装vs,没法全部写!
dalmeeme 2010-10-25
  • 打赏
  • 举报
回复
以qq邮箱为例,这里用了数据库通用类。
		OleDbData md = new OleDbData("select * from 邮箱");
md.ExecuteReader();
StringBuilder sb = new StringBuilder();
int n = 0;
while (md.DR.Read())
{
string email = md.DR["email"].ToString().Trim();
if (email.Contains("@qq.com"))
{
n++;
sb.Append(email);
sb.Append(';');
if (n == 5)
{
sb.Append("\r\n");
n = 0;
}
}
}
md.Close();
FileInfo f = new FileInfo("c:/126邮箱.txt");
StreamWriter writer = f.AppendText();
writer.Write(sb);
writer.Close();
阳光游子 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huangwenquan123 的回复:]
引用 3 楼 huangwenquan123 的回复:
C# code

while(dr.Read())
{
if(dr["Email"].ToString().indexOf("@126"))
{
string path = "126.txt";
if(!File.Exist(path))
File.WriteAllText(path, dr["Email"]+";", En……
[/Quote]


可以写个完整点的么,谢谢~!
huangwenquan123 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huangwenquan123 的回复:]
C# code

while(dr.Read())
{
if(dr["Email"].ToString().indexOf("@126"))
{
string path = "126.txt";
if(!File.Exist(path))
File.WriteAllText(path, dr["Email"]+";", Encoding.U……
[/Quote]
又忘了我从0开始算
改下

for(int i=1;i<=result.length;i++)
{
if(i%5==0)
sb.append(result[i].ToString()+"</br>");
else
sb.append(result[i].ToString());
}
wwfgu00ing 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huangwenquan123 的回复:]
C# code

while(dr.Read())
{
if(dr["Email"].ToString().indexOf("@126"))
{
string path = "126.txt";
if(!File.Exist(path))
File.WriteAllText(path, dr["Email"]+";", Encoding.U……
[/Quote]

已经很详细 了,就是根据Email地址@后面的标识来进行分类,然后再读写文件
huangwenquan123 2010-10-25
  • 打赏
  • 举报
回复

//上面少写了个
if(dr["Email"].ToString().indexOf("@126")!=-1)
huangwenquan123 2010-10-25
  • 打赏
  • 举报
回复

while(dr.Read())
{
if(dr["Email"].ToString().indexOf("@126"))
{
string path = "126.txt";
if(!File.Exist(path))
File.WriteAllText(path, dr["Email"]+";", Encoding.UTF8);
else
File.AppendAllText(path,dr["Email"]+";",Encoding.UTF8);
}
}
//然后在读取126.txt按;分割
string str = File.ReadAllText(path, Encoding.UTF8);
string[] result = str.split(';');
StringBuilder sb = new StringBuilder();
for(int i=0;i<result.length;i++)
{
if(i%5==0)
sb.append(result[i].ToString()+"</br>");
else
sb.append(result[i].ToString());
}
加载更多回复(2)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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