程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> PB快速去除字符串中的非數字字符

PB快速去除字符串中的非數字字符

編輯:SyBase教程

問題:
      有一個字符串例如:61B2993B2ACC8C57A2FB7F5FC587F84D ,
在PB中如何才能將其字符串中的字母去除了(將B、A、C、D、E、F...去除),
留下612993285727558784單純數字的字符串。
 
      常規的方法是通過for循環,逐個進行判斷並剔除,如:
[c-sharp]
string ls_str = "61B2993B2ACC8C57A2FB7F5FC587F84D",ls_rtn 
long ll_i 
for ll_i = 1 to len(ls_str) 
    if isnumber(mid(ls_str,ll_i,1)) then 
       ls_rtn += mid(ls_str,ll_i,1) 
     end if 
next 
messagebox("Caption","原來的值:" + ls_str + "~r現在的值:" + ls_rtn) 
 
      這種方法中規中矩,當然是一種合理的容易理解的解決方案。
    
      這裡我們使用另外一種快捷的方法,用到的是EditMask控件的Mask屬性。
      經過試驗,發現:
      (1)當EditMask的MaskDataType屬性設置為NumericMask!,Mask屬性設置為“##...”時,最多可以輸入16位的數字,粘貼數據時會自動過濾掉非數字的字符,當最終留下的數字個數超過16位時,第16位數的數字會根據第17位數字的大小來決定是否進1,而第17位開始的數字都會被替換為0;
      (2)當EditMask的MaskDataType屬性設置為DecimalMask!,Mask屬性設置為“##...”時,最多可以輸入19位的數字,粘貼數據時會自動過濾掉非數字的字符,當最終留下的數字個數超過19位時,留下的字符串將為空字符串;
      (3)當EditMask的MaskDataType屬性設置為StringMask!,Mask屬性設置為“##...”時,可以輸入無限的數字,粘貼數據時會自動將非數字的字符替換為空格符。
    
      根據以上試驗,可以使用如下代碼來實現替換:
[c-sharp]
//在界面上插入一個EDITMASK對象em_1,viaible = false 
long i 
string ls_sub, ls_deal 
string ls = '61B2993B2ACC8C57A2FB7F5FC587F84D' 
em_1.SetMask(decimalmask!, fill('#', 19)) 
do while true 
    i ++ 
    ls_sub = midw(ls, 19 * (i - 1) + 1, 19) 
    if ls_sub = '' then exit 
    em_1.text = ls_sub 
    ls_deal += em_1.text 
loop 
 
//這時候ls_deal中就只有612993285727558784了 
messagebox('', ls_deal) 
 
 
      至於用StringMask!屬性時,結果如下:
[c-sharp]
//在界面上插入一個EDITMASK對象em_1,viaible = false 
string ls = '61B2993B2ACC8C57A2FB7F5FC587F84D' 
em_1.SetMask(stringmask!, fill('#', len(ls))) 
em_1.text = ls 
messagebox('', em_1.text) 
//這時候em_1.text中就只有61 2993 2   8 57 2  7 5  587 84 了   

摘自 yyoinge的專欄

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