首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

StringList写入到txt文件的换行有关问题

2012-02-05 
StringList写入到txt文件的换行问题我需要做如下转换,把下面那段文字:1993年,公司由前身上海开开公司作为

StringList写入到txt文件的换行问题
我需要做如下转换,把下面那段文字:
1993年,   公司由前身上海开开公司作为发起人,采取定向募集方式改
组为股份有限公司,同时改用现时的公司名称,并发行3070.33万股每
股面值1元人民币之股本.   1994年公司以每一现有股本派送两股红股
票,似的地方大幅度。
换成:
1993年,   公司由前身上海开开公司作为
发起人,采取定向募集方式改组为股份
有限公司,同时改用现时的公司名称,并
发行3070.33万股每股面值1元人民币之
股本.   1994年公司以每一现有股本派送
两股红股票,似的地方大幅度。

这两段文字都是在txt文件中的,我现在用的是TStringList做的,但是很麻烦,考虑的很多,首先“3070.33”不能拆开,还有英文不能拆开,中文字符也不能拆开。比较急着完成,各位大哥帮我想想有什么好办法了,或者有过类似算法的也给个思路吧,谢谢各位了




[解决办法]
这个可能要麻烦些了~

每行限定字符数,然后在按照字符数换行的位置,判断左右字符以及自己是否是数字或者英文,如果是的话,再做另外的处理~就这样~
[解决办法]
有个特别简单的方法,无需考虑语法分析等细节,呵呵,看看:

// 读入文件,假设文件内容就是楼主提供的那一段原始文字
TStringList *pList = new TStringList;
pList-> LoadFromFile( "C:\\ccrun\\test1.txt ");
int nPreLineCount = pList-> Count;
//
TMemo *mmo = new TMemo(this);
TControlCanvas *pCanvas = new TControlCanvas;
pCanvas-> Control = mmo;
pCanvas-> Font = mmo-> Font;
mmo-> Parent = this;
// 隐藏Memo
mmo-> Visible = false;
// 指定Memo的宽度,这个很重要,宽度自己按需调节
mmo-> Width = pCanvas-> TextWidth( "1993年, 公司由前身上海开开公司作为 ") + 4;
delete pCanvas;
// 允许Memo换行
mmo-> WantReturns = true;
// 为Memo的文本赋值,由Memo自动判断换行,注意要替换掉原先文本中的回车
mmo-> Text = StringReplace(pList-> Text, "\r\n ", " ", TReplaceFlags() < < rfReplaceAll);
//
int nLineCount = mmo-> Lines-> Count;
pList-> Assign(mmo-> Lines);
delete mmo;
// 保存到新文件
pList-> SaveToFile( "C:\\ccrun\\test2.txt ");
delete pList;
ShowMessage(String().sprintf( "转换结束,原先%d行,现在%d行 ",
nPreLineCount,nLineCount));

热点排行