题目内容是这样的,有一个文本文件,是从EXCEL格式转换而来的,其中有字母,数字,汉字,现在我想找到某些行,把他替换成其他内容,新内容在另外一个文件中。
比如:找到
SLNF80020011 | 3 | 702 | 垫圈10 | GB/T95-2002 | N | 16 | I |
替换成
SLNF80020011 | 3 | 702 | GAB01001 | 平垫圈A级碳钢-M10 | 95 | N | 16 | I |
其中红色字体为不变内容
>> 本文固定链接: http://www.vcgood.com/archives/1058
题目内容是这样的,有一个文本文件,是从EXCEL格式转换而来的,其中有字母,数字,汉字,现在我想找到某些行,把他替换成其他内容,新内容在另外一个文件中。
比如:找到
SLNF80020011 | 3 | 702 | 垫圈10 | GB/T95-2002 | N | 16 | I |
替换成
SLNF80020011 | 3 | 702 | GAB01001 | 平垫圈A级碳钢-M10 | 95 | N | 16 | I |
其中红色字体为不变内容
>> 本文固定链接: http://www.vcgood.com/archives/1058
你必须先 登录才能发表评论。
思路很简单的。因为在这个EXCEL文本中有一个特殊字符,就是一个制表符,或者说就是完全是一个空字符串,此制表符是用键盘上的tab键在文本文件中就能使用。那么相当于是一个分隔,既然知道是一个分隔,写一个函数处理这个分隔,然后把分隔的后的每段写到一个数组。然后替换一些数组里的值就算替换了表格里的值,最后再把数组存成一个整体。如果说要找行。可以使用C或者C++的文本操作函数,一行一行地读。
下面提供一个C++的分隔代码
CString strTmp1,strLine=”This is Test”,strTemp[20];//定义了一个CString类,MFC中的字符串类
int n=0;定义strTemp的数组当前下标
for(int i=0;i<strLine.GetLength();i++)//GetLength是得到这个符串的字符数
{
strTmp1+=strLine.Mid(i,1);//mid函数。这里的调用是用来获取一个字符。
if(strLine.Mid(i,1)==_T( ” “)||i==strLine.GetLength()-1)//如果值是空格就执行,以空格做为分隔,可以把这个空格换成制表符。或者如果i为最后长度
{
strTmp1.TrimRight();//使用右边的空格去除
strTemp[n++]=strTmp1;
strTmp1.Empty();//清空此变量
if(n==20) break;//如果大于数组的长度就停止退出
}
}
这段代码执行以后使strTemp[0]=”This”,strTemp[1]=”is”,strTemp[2]=”Test”,达到了效果。不过strTemp在这里我是为了方便所以使用了一个固定数组。最好采用动态数组。