急~~把一个文件夹里的所有文本文件里的中文字符前面加一个空格然后把所有内容输出到一个HTM文件的<table></table>中?
比如,这个文件夹里有3个文件,文件名1.txt; 2.txt; 3.txt.
我想把1.txt处理为1.htm,要把且仅把1.txt中的中文字符前面加一个空格,然后生成为固定格式的1.htm文件。(2,3类似).
比如1.txt的内容是"CSDN_专家门诊!",那么1.htm中的内容如下:
<head>
....
</head>
<body>
<table>
<fond size=12>CSDN_ 专 家 门 诊!</fond>
</table>
</body>
问题点数:100、回复次数:12Top
1 楼pzoon(杀死日本人)回复于 2003-11-04 08:49:27 得分 12
你知道再那段需要添加<table>这些么,如果知道的话,你可以把文本先读进一个容器里,然后分解,这是最苯的方法Top
2 楼Cbfan(民族英雄~~)回复于 2003-11-04 09:19:47 得分 0
把文本文件里的所有咚咚都添加到<table>之间,只不过是把里面的中文字符前面加个空格。Top
3 楼matq2008(叶子.net)回复于 2003-11-04 09:27:39 得分 13
加入这个就行了,这是html的语法,空格Top
4 楼pp616(坏蛋)回复于 2003-11-04 09:41:04 得分 13
呵呵。AnsiString::ByteType
去看看吧。中文字符判断需要用到。Top
5 楼Atomictry(天影)回复于 2003-11-04 09:56:06 得分 12
研究一下。Top
6 楼andy_qhz(天地一线)回复于 2003-11-04 10:51:32 得分 13
我给你点思路:你做个循环,在每个文本文件里读取数据(一行一行读),将一行数据放到buf里面,然后操作缓冲区数据,查找中文字符(中文字符是双字节的,第一字节ASCII码值>127的为中文字符),然后再在中文字符前加空格,最后将该行修改了的数据拷贝到你的目标文件中Top
7 楼zhouxiaotan(夜雨悠扬)回复于 2003-11-04 11:51:24 得分 12
如果需要用程序判断中文的话,可以使用ascii函数,来判断,所有的中文字符的编码的返回值都是小于1的Top
8 楼Cbfan(民族英雄~~)回复于 2003-11-04 19:01:13 得分 0
upupTop
9 楼Cbfan(民族英雄~~)回复于 2003-11-05 09:44:00 得分 0
AnsiString cdir;
TSearchRec sr;
if(FindFirst(sPath+"\\*.txt",faDirectory,sr)==0)
{
cdir=sPath+"\\"+sr.Name;
Memo1->Lines->LoadFromFile(cdir);
//WideString aa=Memo1->Text.c_str();
unsigned char *cBefore= Memo1->Text.c_str();
unsigned char cAfter[500000];
int j=0;
ShowMessage(Memo1->Text.Length());
for(int i=0; i<Memo1->GetTextLen(); i++) {
if(cBefore[i]>160) { //中文
cAfter[j]=cBefore[i];
cAfter[j+1]=cBefore[i+1];
cAfter[j+2]=' ';
i++;
j=j+3;
}
else { //其他符号
cAfter[j]=cBefore[i];
j++;
}
}
Memo2->Lines->Add(StrPas(cAfter));
Memo4->Text=Memo3->Text + Memo2->Text + Memo4->Text;
Memo4->Lines->SaveToFile(ChangeFileExt(cdir, "") + ".htm");
Memo1->Clear();
Memo2->Clear();
Memo4->Clear();
}
。。。。。。。。。。。。。。。
这样写,为什么文件超过5K,程序就异常!!!???Top
10 楼yjy1001(蓝鲸--优秀得郁闷的鱼)回复于 2003-11-05 13:38:36 得分 13
你这样写应该可以解决问题的了
不过 可能 5k以上的问题 行数太多
导致 Memo装载益处了
用TStringList来操作看看。
判断和添加部分 很容易的 没什么难度Top
11 楼Cbfan(民族英雄~~)回复于 2003-11-05 19:26:52 得分 0
谢谢~~Top
12 楼yhz(耗子)回复于 2003-11-06 11:21:39 得分 12
对于这种大小不定的文件操作,我觉得最好不要一次性全部读进内存。
还是老老实实用 fgets/fputs 比较好。占资源比较少,处理上也不见得麻烦多少。Top




