上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Patrick Wu
註冊時間: 2007-01-03 文章: 223 來自: 台北市
第 1 樓
|
發表於: 星期五 七月 31, 2020 11:07 am 文章主題: 在一行的程式指令只取出數字 |
|
|
? STRTRAN(STRTRAN("4246-3152 8200-4400 400 張大頭" , " " , "") , "-" , "") &&& 替換掉 " " & "-"
顯示 "4246315282004400400張大頭"
後學功力差 想請教各先進 還有哪個函數可以在{一行}的程式內只取出數字的部分 "4246315282004400400" 這是後學要的結果
原字串數字的部分有可能是 15 或 16 或 19 碼 "張大頭" 有可能會在數字的前面 沒給使用者設定輸入的方式 所以 ....
VFP6 謝謝各先進 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 2 樓
|
發表於: 星期五 七月 31, 2020 4:16 pm 文章主題: |
|
|
一次取一個BYTE,
判斷這個BYTE的 ASCII CODE 或是 它是不是一個數字
這就是正常人的想法
你該不會不知道吧 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2158
第 3 樓
|
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 4 樓
|
發表於: 星期六 八月 01, 2020 8:12 am 文章主題: |
|
|
? TRANSFORM(INT(VAL(CHRTRAN("4246-3152 8200-4400 400 張大頭" , " -" , "")))) |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 5 樓
|
發表於: 星期六 八月 01, 2020 8:17 am 文章主題: |
|
|
方法二:
A = "4246-3152 8200-4400 400 張大頭"
?CHRTRAN(A, CHRTRAN(A, "0123456789", ""), "")
這種方法的好處在於,不管數字在什麼位置都能取出來。 |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 6 樓
|
發表於: 星期六 八月 01, 2020 8:23 am 文章主題: |
|
|
處理這類問題,VFP的自身函數功能是相當強大的,沒必要借助外力。 |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 7 樓
|
發表於: 星期六 八月 01, 2020 8:38 am 文章主題: |
|
|
3樓的方法比較新穎,但效率低下(用到了遞歸算法,反覆調用函數),代碼的多少不是重要的,重要的是代碼的運行效率。 |
|
回頂端 |
|
|
Patrick Wu
註冊時間: 2007-01-03 文章: 223 來自: 台北市
第 8 樓
|
發表於: 星期一 八月 03, 2020 4:30 pm 文章主題: |
|
|
感謝各先進的指導
Lygcw9603 先進的這個 真的是可以寫成 {一行}
? CHRTRAN("4246-3152 8200-4400 400 張大頭", CHRTRAN("4246-3152 8200-4400 400 張大頭", "0123456789", "") , "")
"4246-3152 8200-4400 400 張大頭" 是一個欄位 可以直接帶入
太感謝了 |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 9 樓
|
|
回頂端 |
|
|
|