在一個文本文件中比較每倏記錄輸出相同的行

sione88 2008-07-11 08:10:45
在一個文本文件中比較每倏記錄輸出相同的行
比如說:
文件:
1
123
123456
456789
123456
789
0123
123
那麼輸出結果:
123
123456
請各位幫賜教!謝謝!
...全文
159 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
sione88 2008-07-11
  • 打赏
  • 举报
回复
谢谢楼上的一直关注,但是还是输出不了任何数据!
这是什么原因呢!
sione88 2008-07-11
  • 打赏
  • 举报
回复
有没有更好的办法啊,各位来发表一下!
pupo 2008-07-11
  • 打赏
  • 举报
回复
string fileName = System.IO.Path.Combine(Application.StartupPath,"1.txt");
string tmp = null;
Hashtable ht = new Hashtable();
using (System.IO.StreamReader sr = new System.IO.StreamReader(fileName))
{
fileName = System.IO.Path.Combine(Application.StartupPath,"2.txt");
System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName);
while ((tmp = sr.ReadLine()) != null)
{
if (tmp.Trim().Length != 0)
if (ht.Contains(tmp))
sw.WriteLine(tmp);
else
ht[tmp] = 0;
}
sw.Close();

}
随缘心 2008-07-11
  • 打赏
  • 举报
回复
呵呵,学习了,顶
sione88 2008-07-11
  • 打赏
  • 举报
回复
还是不行咯,相同的数据还是输不出来,是空白的!

if (!tempList.Contains(str))
{
  tempList.Add(str); //将不重复的权限数据录入到tempList
 }
else

   strNew =strNew+str;


else 好像都没落执行过呢!
所以输了,出来的都是空值!
xuyang840117 2008-07-11
  • 打赏
  • 举报
回复
string fileName = System.IO.Path.Combine(Application.StartupPath,"1.txt");
string str= null;
string strNew="";

using (System.IO.StreamReader sr = new System.IO.StreamReader(fileName))
{
while ((tmp = sr.ReadLine()) != null)

if (!tempList.Contains(str))
{
tempList.Add(str); //将不重复的权限数据录入到tempList
}
else

strNew =strNew+str;


FileStream fs = new FileStream("d:/2.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));//通过指定字符编码方式可以实现对汉字的支持,否则在用记事本打开查看会出现乱码
sw.Flush();
sw.BaseStream.Seek(0, SeekOrigin.Begin);
sw.Write(Environment.NewLine);
sw.WriteLine(strNew);
sw.Flush();
sw.Close();
xuyang840117 2008-07-11
  • 打赏
  • 举报
回复
ArrayList tempList = new ArrayList();
sione88 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xuyang840117 的回复:]


string fileName = System.IO.Path.Combine(Application.StartupPath,"1.txt");
string str= null;

using (System.IO.StreamReader sr = new System.IO.StreamReader(fileName))
{
while ((tmp = sr.ReadLine()) != null)

if (!tempList.Contains(str))
{
tempList.Add(str); //将不重复的权限数据录入到tempList
}
else

输出 str


}
[/Quote]


tempList 哪来的啊!
sione88 2008-07-11
  • 打赏
  • 举报
回复
能不能把它写到一个文本中去
xuyang840117 2008-07-11
  • 打赏
  • 举报
回复


string fileName = System.IO.Path.Combine(Application.StartupPath,"1.txt");
string str= null;

using (System.IO.StreamReader sr = new System.IO.StreamReader(fileName))
{
while ((tmp = sr.ReadLine()) != null)

if (!tempList.Contains(str))
{
tempList.Add(str); //将不重复的权限数据录入到tempList
}
else

输出 str


}
SlaughtChen 2008-07-11
  • 打赏
  • 举报
回复
关注中... ...
sione88 2008-07-11
  • 打赏
  • 举报
回复
我知道是控制台程序 ,但是输出不了结果,没有任何东西显示!
好像是比较里有问题!
如果要写到一个文本里去呢
pupo 2008-07-11
  • 打赏
  • 举报
回复
Console.WriteLine(tmp);
是控制台输出

winform程序,可以用MessageBox.Show弹出来看看,
或者写到一个文本里面,看结果的方法多的很,看你自己需要
sione88 2008-07-11
  • 打赏
  • 举报
回复
上面的代码好像输出不了任何东西哦,为什么?
sione88 2008-07-11
  • 打赏
  • 举报
回复
哦,谢谢!
pupo 2008-07-11
  • 打赏
  • 举报
回复
sw.WriteLine(tmp);
改成Console

ht[tmp] = 0; 主要是用hashtable的键,随便赋了个0
sione88 2008-07-11
  • 打赏
  • 举报
回复


ht[tmp] = 0;

请问这个是什么意思啊!
pupo 2008-07-11
  • 打赏
  • 举报
回复
string fileName = System.IO.Path.Combine(Application.StartupPath,"1.txt");
string tmp = null;
Hashtable ht = new Hashtable();
using (System.IO.StreamReader sr = new System.IO.StreamReader(fileName))
{
while ((tmp = sr.ReadLine()) != null)
if (tmp.Trim().Length != 0)
if (ht.Contains(tmp))
sw.WriteLine(tmp);
else
ht[tmp] = 0;
}
sione88 2008-07-11
  • 打赏
  • 举报
回复
up,up !!
JustLovePro 2008-07-11
  • 打赏
  • 举报
回复
定义一个集合,读取一行后判断此行是否存在于集合中,有则输出,没则加入~
加载更多回复(2)

110,891

社区成员

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

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

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