pb快速替换文本文档(txt文件)中指定字符的方法

原创 2011年11月02日 12:03:59

    经常有人在询问如何快速将文本文档中的“,”批量替换为Tab制表符,以方便将文本文档快速导入datawindow中。
    大多数PB程序员都是建议使用fileopen、fileread(9及以前版本。10及以后版本用filereadex)的方法读入,然后再自己写个函数进行字符串的replace 。这种方法未尝不可,只是效率太低。
    下面给出一种使用ole进行处理的方法,该方法集成在如下全局函数f_txt_replace (string as_file, string as_search, string as_replace)中。

global function long f_txt_replace
 (string as_file, string as_search, string as_replace);
string ls
int li
oleObject ADODB,ScrCtl
//(1)打开并读取文件
ADODB = CREATE OLEObject   
if ADODB.ConnectToNewObject("ADODB.Stream")    <> 0 then
	messagebox('', '无法连接【ADODB.Stream】!')
	return -1
end if
ADODB.Type = 1 //二进制数据Binary   
ADODB.Mode =3 //具有读/写权限   
ADODB.Open()   
ADODB.LoadFromFile(as_file)   
ADODB.Position = 0 //Position为0才能设置Charset   
ADODB.Type = 1 //blob数据     
ls = string(ADODB.Read() )
//(2)替换文本内容
ScrCtl = create oleobject
if ScrCtl.connecttonewobject("MSScriptControl.ScriptControl") <> 0 then
	messagebox('', '无法连接【MSScriptControl.ScriptControl】!')
	return -1
end if
ScrCtl.Language = "JavaScript"
ScrCtl.Eval("function clrn(str){return str.replace(/" + as_search + "/g,'" + as_replace + "')}")
ls = string(ScrCtl.CodeObject.clrn(ls))
destroy ScrCtl
//(3)保存并关闭文件
ADODB.Position   =   0
ADODB.write(blob(ls))
//保存为文本文件
ADODB.SaveToFile( as_file, 2) 
//清空缓冲区数据
ADODB.flush() 
//关闭流
ADODB.Close() 
destroy ADODB

return len(ls)
end function

    调用方法如下:
long ll_size
ll_size = f_txt_replace('e:\a.txt', ',', '~t') //将半角逗号, 替换为制表符
messagebox('替换后文件大小', ll_size)

    至于效率如何,大家自己试试吧

pb获取文本文档(txt文件)总行数的方法

在某些情况下,我们可能会有获取文本文档(txt文件)的总行数的需求。常规的做法是通过fileread,一行一行的读,然后统计累加行数,这样的做法是逼不得已的做法,因为我们都晓得它的效率有多低。   ...
  • yyoinge
  • yyoinge
  • 2011年11月02日 14:38
  • 1401

一个用JAVA解析TXT格式文本文档的程序举例

java txt

VTK生成分布在球内部或者表面的三维点云坐标,将点云坐标保存为txt文本文档

使用VTK生成分布在球内部或者表面的三维点云数据,可以设置球的中心,半径以及生成的三维点的个数并选择可以设置在球内部生成或者是球表面生成。 #include #include #include ...

从TXT文本文档向Sql Server中批量导入数据

因为工作的需要,近期在做数据的分析和数据的迁移。在做数据迁移的时候需要将原有的数据导入到新建的数据库中。本来这个单纯的数据导入导出是没有什么问题的,但是客户原有的数据全部都是存在.dat文件中的。所以...
  • whatday
  • whatday
  • 2014年08月06日 16:52
  • 586

从TXT文本文档向Sql Server中批量导入数据

因为工作的需要,近期在做数据的分析和数据的迁移。在做数据迁移的时候需要将原有的数据导入到新建的数据库中。本来这个单纯的数据导入导出是没有什么问题的,但是客户原有的数据全部都是存在.dat文件中的。所以...
  • xuemoyao
  • xuemoyao
  • 2013年01月15日 16:30
  • 20727

Lucene3.1 之读取txt文本文档内容

本来不想写的,因为网络上Lucene的资料太多了,不过,既然自己也在学的话,就当作自己的一份笔记,记录一点东西。...

Matlab中读取txt文本文档

一、纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如test.txt文件,内容为 17.901 -1.1111 33.045 17.891 -...

从SQLite数据库导出txt文本文档

/** * 导出数据库 * * @param title * @return */ public void exportDb(String title) { String ...

Android大TXT文本文档读取

上次写了个Android大TXT文本文档读取,但是提到不能往回读,这两天就顺手写了一下回翻的效果,当然回翻的时候鉴于手机CPU或者内存的缘故会觉得卡或者不卡,不过还好,自己测试的效果还行。倒是一直在后...
  • Zongsx
  • Zongsx
  • 2013年03月23日 15:49
  • 940
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pb快速替换文本文档(txt文件)中指定字符的方法
举报原因:
原因补充:

(最多只允许输入30个字)