程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> pb快速替換文本文檔(txt文件)中指定字符的方法

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

編輯:SyBase教程

經常有人在詢問如何快速將文本文檔中的“,”批量替換為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的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved