|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
chioucy
註冊時間: 2004-05-26 文章: 33
第 1 樓
|
發表於: 星期三 七月 19, 2006 4:51 pm 文章主題: 請問如何將一字串拆成二子字串 而不會將中文字拆成兩個亂碼 |
|
|
有一字串 vSTR 長度如為 40 內容為中英文混雜 想將其拆為二個子字串
vSTR1=SUBSTR(vSTR,1,20)
vSTR2=SUBSTR(vSTR,21,20)
如果vSTR字串中間剛好為一中文字 則會發生中文字拆成二個半形亂碼
請問要如何避免 |
|
回頂端 |
|
|
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 2 樓
|
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 3 樓
|
發表於: 星期三 七月 19, 2006 6:14 pm 文章主題: |
|
|
SUBSTRC() _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
chioucy
註冊時間: 2004-05-26 文章: 33
第 4 樓
|
發表於: 星期三 七月 19, 2006 8:46 pm 文章主題: |
|
|
謝謝兩位前輩的指導
經過嘗試 我用以下程式段解決了
AAA = "這個是測試字串"
? CUT_2_STR(AAA,1)
? CUT_2_STR(AAA,2)
? CUT_2_STR(AAA,1)+CUT_2_STR(AAA,2)
*==============================================================
* 本函式會將字串盡量平均分成兩個同長度的子字串,且不受中文字影響
*---------------------------------------------------------------------------------------------
* 傳入值: vSTR ==> 要做分割的字串
* vPOS = 1 ==> 取第一個子字串
* vPOS = 2 ==> 取第二個子字串
*==============================================================
FUNCTION CUT_2_STR
PARAMETERS vSTR, vPOS
LOCAL vLEN
vLEN = INT(LEN(vSTR)/2)
vLEN = IIF (BETWEEN(ASC(RIGHTC(SUBSTR(vSTR,1,vLEN),1)),128,255),vLEN+1,vLEN)
RETURN IIF(vPOS=1,SUBSTR(vSTR,1,vLEN),SUBSTR(vSTR,vLEN+1,LEN(vSTR) - vLEN)) |
|
回頂端 |
|
|
lcj0831
註冊時間: 2003-02-22 文章: 21
第 5 樓
|
發表於: 星期四 七月 20, 2006 8:43 am 文章主題: |
|
|
在VFP 6.0 有函數可運用, 不用自己寫了哦!
請參考
?LEFTC('這是測試文字',3)
→這是測
?RIGHTC('這是測試文字',3)
→試文字 |
|
回頂端 |
|
|
cchvfp
註冊時間: 2003-07-05 文章: 18
第 6 樓
|
發表於: 星期一 七月 24, 2006 3:55 pm 文章主題: |
|
|
CC='有一字串STR長度如為40內容為中英文混雜想將其拆為二個子字串vSTR1=SUBSTR(vSTR,1,20)'
SET MEMOWIDTH TO 40
? MEMLINES(CC)
? MLINE(CC,1)
? MLINE(CC,2)
試試吧 |
|
回頂端 |
|
|
chioucy
註冊時間: 2004-05-26 文章: 33
第 7 樓
|
發表於: 星期二 七月 25, 2006 11:30 am 文章主題: |
|
|
謝謝 cchvfp
我是用 VFP6 經測試 結果 ? MLINE(CC,2) 還是會亂掉
? MLINE(CC,1) ==> 有一字串STR長度如為40內容為中英文混雜想
? MLINE(CC,2) ==> N其拆為二個子字串vSTR1=SUBSTR(vSTR,1,20) |
|
回頂端 |
|
|
lelhappy
註冊時間: 2004-06-04 文章: 20
第 8 樓
|
發表於: 星期四 十二月 07, 2006 6:07 pm 文章主題: |
|
|
cc='有一字串STR長度如為40內容為中英文混雜想將其拆為二個子字串vSTR1=SUBSTR(vSTR,1,20)'
? cut_2_str(cc,40,1)
? cut_2_str(cc,40,2)
FUNC CUT_2_STR
para nStr,nWide,nNum
priv oNum
str該字串 = nStr
n您要的欄寬 = nWide
n要取該字串的開始位址 = 1
oNum=1
do whil n要取該字串的開始位址<=len(str該字串)
if lenc(substr( str該字串 , n要取該字串的開始位址 , n您要的欄寬))=lenc(substr( str該字串 , n要取該字串的開始位址 , n您要的欄寬 -1 ))
str你要取的字串=substr( str該字串 , n要取該字串的開始位址 , n您要的欄寬-1)
n要取該字串的開始位址 = n要取該字串的開始位址+n您要的欄寬-1
else
str你要取的字串=substr( str該字串 , n要取該字串的開始位址 , n您要的欄寬)
n要取該字串的開始位址 = n要取該字串的開始位址+n您要的欄寬
endi
if oNum=nNum
retu(str你要取的字串)
endi
oNum=oNum+1
endd
retu('')
試試看 |
|
回頂端 |
|
|
KKKLYNN
註冊時間: 2004-09-17 文章: 357
第 9 樓
|
發表於: 星期五 十二月 08, 2006 11:46 am 文章主題: |
|
|
陣仗好像弄的太大!
如syntech兄所言
substrc()
就好了
以上您參考 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|