
上圖中 "脂肪肝" 這個字串是從別人資料庫中取出來的資料
我要再加上一個字串 比如 "111" 中間要換行 但用chr(13)不行
后來發現 "脂肪肝" 后面有一個看不到的字符 ansi碼是206
這樣的情況怎么加上換行符呢
注意 亂字符 是不固定的
我找了個網站查了一下目前發現的亂字符 是ASCII碼的 不是ANSI碼的 但內容一樣。。。
ASCII碼 206 對應的字符為 ?
ASCII碼 219 對應的字符為 ?
ASCII碼 181 對應的字符為 μ
ASCII碼 175 對應的字符為 ˉ
uj5u.com熱心網友回復:
chr(13) 是回車,chr(10) 才是換行uj5u.com熱心網友回復:
Unix,用 “\n” 表示換行Mac,用 “\r” 表示換行
Windows面,用 “\r\n” 表示換行
因此你最好用 chr(13)+chr(10)
uj5u.com熱心網友回復:
重點不是回車和換行 這兩個我都試了 平時都是可以的 這次是因為字串結尾有亂字符 就不行了
uj5u.com熱心網友回復:
? '脂肪肝'+chr(206)+chr(10)+'111' && 這樣肯定看不到亂字符只不過半個無效字符并沒去掉。要去掉也可以
s = '脂肪肝'+chr(219)
s = Strconv(Rtrim(Strconv(s,5),0h0000),6)
? s +Chr(13)+'111'
uj5u.com熱心網友回復:
a = "脂肪肝"?a
?LEN(a)
?ASC(RIGHT(a,1))
?'111'+CHR(10)+a

漢字由兩個位元組構成,您看到的 206 正是 肝 字的第二個位元組的內碼
uj5u.com熱心網友回復:
我也遇到過,挻麻煩,直接算好長度直接截才行。uj5u.com熱心網友回復:
參考一下:PROC FHZSTR
PARAMETER m.q_com,m.q_nn
* m.q_com =
* m.q_nn =
* 引數:字串、寬度
* 回傳:從左邊取,字串尾有半個漢字時去掉尾部半個漢字
*PRIVATE ALL LIKE q_*
*PRIVATE m.q_com
*PRIVATE m.q_nn
PRIVATE m.q_com1
PRIVATE m.q_n1
PRIVATE m.q_n2
IF TYPE("m.q_com")#"C"
m.q_com=""
ENDI
IF TYPE("m.q_nn")#"N"
m.q_nn=LEN(m.q_com)
ENDI
m.q_com1=LEFT(m.q_com,m.q_nn)
m.q_nn=LEN(m.q_com1)
m.q_n1=1
m.q_n2=0
DO WHILE m.q_n1<=m.q_nn
IF (m.p_dbk_chs.AND.fisachs(SUBS(m.q_com1,m.q_n1,2))).OR.(m.p_dbk_cht.AND.fisacht(SUBS(m.q_com1,m.q_n1,2)))
m.q_n1=m.q_n1+2
m.q_n2=m.q_n1
LOOP
ENDI
IF (m.p_dbk_chs.AND.!fisachs(SUBS(m.q_com1,m.q_n1,1)+CHR(200))).OR.(m.p_dbk_cht.AND.!fisacht(SUBS(m.q_com1,m.q_n1,1)+CHR(200)))
m.q_n1=m.q_n1+1
m.q_n2=m.q_n1
LOOP
ENDI
m.q_n1=m.q_n1+1
ENDDO
IF m.q_n2=m.q_nn+1
m.q_com1=LEFT(m.q_com,m.q_nn)
m.q_com=SUBS(m.q_com,m.q_nn+1)
ELSE
m.q_com1=LEFT(m.q_com,m.q_nn-1)
m.q_com=SUBS(m.q_com,(m.q_nn-1)+1)
ENDI
RETU m.q_com1
* END OF PROC FHZSTR.
PROC FISACHS
PARAMETER m.q_vexp
* m.q_vexp =
* 引數:字符
* 回傳:為簡體中文字符(GBK) .T.
* 否則 .F.
RETU BETWEEN(ASC(SUBS(m.q_vexp,1,1)),129,254).AND.;
(BETWEEN(ASC(SUBS(m.q_vexp,2,1)),64,126).OR.BETWEEN(ASC(SUBS(m.q_vexp,2,1)),128,254))
* END OF PROC FISACHS.
PROC FISACHT
PARAMETER m.q_vexp
* m.q_vexp =
* 引數:字符
* 回傳:為繁體中文字符(BIG5) .T.
* 否則 .F.
RETU BETWEEN(ASC(SUBS(m.q_vexp,1,1)),161,254).AND.;
(BETWEEN(ASC(SUBS(m.q_vexp,2,1)),64,126).OR.BETWEEN(ASC(SUBS(m.q_vexp,2,1)),161,254))
* END OF PROC FISACHT.
?FHZSTR(s,len(s))
uj5u.com熱心網友回復:
可以去掉這些字符再換行chr(13)+chr(10)uj5u.com熱心網友回復:
又看到版主的回復,感想,十豆三,照亮vfp學習者前進的道路。uj5u.com熱心網友回復:
后面加個空格+chr(13)+chr(10)行不行?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82810.html
標籤:VFP
