VFP处理处理字符串中的乱字符

無法替代 2018-05-09 05:05:56


上图中 "脂肪肝" 这个字符串是从别人数据库中取出来的数据
我要再加上一个字符串 比如 "111" 中间要换行 但用chr(13)不行
后来发现 "脂肪肝" 后面有一个看不到的字符 ansi码是206
这样的情况怎么加上换行符呢

注意 乱字符 是不固定的
我找了个网站查了一下目前发现的乱字符 是ASCII码的 不是ANSI码的 但内容一样。。。

ASCII码 206 对应的字符为 Î
ASCII码 219 对应的字符为 Û
ASCII码 181 对应的字符为 µ
ASCII码 175 对应的字符为 ¯
...全文
1725 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmawma123 2018-08-18
  • 打赏
  • 举报
回复
后面加个空格+chr(13)+chr(10)行不行?
weixin_42993008 2018-08-17
  • 打赏
  • 举报
回复
又看到版主的回复,感想,十豆三,照亮vfp学习者前进的道路。
十豆三 2018-06-23
  • 打赏
  • 举报
回复
可以去掉这些字符再换行chr(13)+chr(10)
阿凡提 2018-05-20
  • 打赏
  • 举报
回复
参考一下: 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))
wwle 2018-05-18
  • 打赏
  • 举报
回复
我也遇到过,挻麻烦,直接算好长度直接截才行。
xuzuning 2018-05-17
  • 打赏
  • 举报
回复
a = "脂肪肝"
?a
?LEN(a)
?ASC(RIGHT(a,1))
?'111'+CHR(10)+a

汉字由两个字节构成,您看到的 206 正是 肝 字的第二个字节的内码
無法替代 2018-05-10
  • 打赏
  • 举报
回复
引用 2 楼 dkfdtf 的回复:
Unix,用 “\n” 表示换行 Mac,用 “\r” 表示换行 Windows面,用 “\r\n” 表示换行 因此你最好用 chr(13)+chr(10)
重点不是回车和换行 这两个我都试了 平时都是可以的 这次是因为字符串结尾有乱字符 就不行了
都市夜猫 2018-05-10
  • 打赏
  • 举报
回复
? '脂肪肝'+chr(206)+chr(10)+'111' && 这样肯定看不到乱字符
只不过半个无效字符并没去掉。要去掉也可以
s = '脂肪肝'+chr(219)
s = Strconv(Rtrim(Strconv(s,5),0h0000),6)
? s +Chr(13)+'111'
都市夜猫 2018-05-09
  • 打赏
  • 举报
回复
Unix,用 “\n” 表示换行 Mac,用 “\r” 表示换行 Windows面,用 “\r\n” 表示换行 因此你最好用 chr(13)+chr(10)
都市夜猫 2018-05-09
  • 打赏
  • 举报
回复
chr(13) 是回车,chr(10) 才是换行

2,732

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧