国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > sybase > pb快速替换文本文档(txt文件)中指定字符的方法

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

来源:程序员人生   发布时间:2013-10-30 06:19:22 阅读次数:4791次
经常有人在询问如何快速将文本文档中的“,”批量替换为Tab制表符,以方便将文本文档快速导入datawindow中。
    大多数PB程序员都是建议使用fileopen、fileread(9及以前版本。10及以后版本用filereadex)的方法读入,然后再自己写个函数进行字符串的replace 。这种方法未尝不可,只是效率太低。
    下面给出一种使用ole进行处理的方法,该方法集成在如下全局函数f_txt_replace (string as_file, string as_search, string as_replace)中。
 
[cpp]
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 
 
    调用方法如下:
[cpp]
long ll_size 
ll_size = f_txt_replace('e:a.txt', ',', '~t') //将半角逗号, 替换为制表符 
messagebox('替换后文件大小', ll_size) 
 
    至于效率如何,大家自己试试吧
 

摘自 yyoinge的专栏 ,
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生