C# 对txt文本行数据进行对比并批量操作
TXT1内容如下123456123甲1123456456甲2123456789甲3TXT2内容如下123456甲2123456甲3TXT3来自TXT2对TXT1的过滤最后...
TXT1内容如下
123456 123 甲1
123456 456 甲2
123456 789 甲3
TXT2内容如下
123456 甲2
123456 甲3
TXT3来自TXT2对TXT1的过滤 最后结果如下
123456 甲2 456
123456 甲3 789
该怎么去读取txt1与txt2的内容 进行过滤换位
最后输出txt3? 展开
123456 123 甲1
123456 456 甲2
123456 789 甲3
TXT2内容如下
123456 甲2
123456 甲3
TXT3来自TXT2对TXT1的过滤 最后结果如下
123456 甲2 456
123456 甲3 789
该怎么去读取txt1与txt2的内容 进行过滤换位
最后输出txt3? 展开
3个回答
展开全部
//用Linq语法处理:
string[] txt1 = System.IO.File.ReadAllLines(@"C:\txt 1.txt", Encoding.Default);
string[] txt2 = System.IO.File.ReadAllLines(@"C:\txt 2.txt", Encoding.Default); //读取文件,并返回数组
var items1 = from item in txt1 select item.Split(' ');
var items2= from item in txt2 select item.Split(' '); //对每行再以空格分隔为数组
var result = from item1 in items1 join item2 in items2 on item1[2] equals item2[1] select string.Format ("{0} {1} {2}",item2[0], item2[1], item1[1]); //以"甲x "为匹配条件连接两个集合。
System.IO.File.WriteAllLines(@"C:\txt 3.txt", result, Encoding.Default);//写入文件
foreach (var item in result ){
Console.WriteLine(item);
}
展开全部
class Program
{
static void Main(string[] args)
{
string[] values1 = File.ReadAllLines(@"c:\test1.txt");
string[] values2 = File.ReadAllLines(@"c:\test2.txt");
string[] values3 = values1.Intersect(values2, new 比较器()).ToArray();
for (int i = 0; i < values3.Length; i++)
{
string[] splitStrs = values3[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
string temp = splitStrs[splitStrs.Length - 2];
splitStrs[splitStrs.Length - 2] = splitStrs[splitStrs.Length - 1];
splitStrs[splitStrs.Length - 1] = temp;
values3[i] = string.Join(" ", splitStrs);
}
File.WriteAllLines(@"c:\test3.txt", values3);
Console.ReadKey();
}
}
class 比较器 : IEqualityComparer<string>
{
#region IEqualityComparer<string> 成员
public bool Equals(string x, string y)
{
string[] splitStrs1 = x.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
string[] splitStrs2 = y.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
return string.CompareOrdinal(splitStrs1[splitStrs1.Length - 1], splitStrs2[splitStrs2.Length - 1]) == 0;
}
public int GetHashCode(string obj)
{
return 0;
}
#endregion
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建一个类
Class TxtStr
{
List<string> LineStr;
}
第一步:
先将txt1的数据一次性读出来,放进List<TxtStr>
List<TxtStr> txt1StrList = new List<TxtStr>();
TxtStr line = null
foreach(循环读txt1文件中的每一行到line1)
{
line = new TxtStr();
line.LineStr = line1.Split(' ');
txt1StrList.add(line )
}
第二步:
foreach(循环读TXT2每一行到line2)
{
List<string> sStr= line2.Split(' ');
for(var item in txt1StrList )
{
if(item.LineStr[0] == sStr[0] && item.LineStr[2] == sStr[1] ) //匹配过滤
{
string writeStr = sStr[0] + " " + sStr[1] + " " + item.LineStr[1]
再将writeStr 写入txt3
}
}
}
Class TxtStr
{
List<string> LineStr;
}
第一步:
先将txt1的数据一次性读出来,放进List<TxtStr>
List<TxtStr> txt1StrList = new List<TxtStr>();
TxtStr line = null
foreach(循环读txt1文件中的每一行到line1)
{
line = new TxtStr();
line.LineStr = line1.Split(' ');
txt1StrList.add(line )
}
第二步:
foreach(循环读TXT2每一行到line2)
{
List<string> sStr= line2.Split(' ');
for(var item in txt1StrList )
{
if(item.LineStr[0] == sStr[0] && item.LineStr[2] == sStr[1] ) //匹配过滤
{
string writeStr = sStr[0] + " " + sStr[1] + " " + item.LineStr[1]
再将writeStr 写入txt3
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询