视觉论坛VISIONBBS微信公众号:石鑫华视觉网

 找回密码
 注册会员
查看: 101|回复: 0

[原创] LabVIEW包含字母数字中文和不可见字符串拆分为数组

[复制链接]
  • TA的每日心情
    开心
    昨天 09:43
  • 签到天数: 1330 天

    [LV.10]100FPS

    发表于 2018-9-28 17:30:36 | 显示全部楼层 |阅读模式
    LabVIEW包含字母数字中文和不可见字符串拆分为数组今天在群里看到一个有意思的问题,就是LabVIEW中,如何将一串包含了字母、数字、符号、中文等的字符串,逐个正确的转换为数组。
    , l3 J& M3 N1 I8 }  [' T
    + H/ l; V+ ?1 U' x$ d; ^# l' E1 [
    $ q& y- m- x* {图中提供了两种方法。上面第一种方法是网友提供的。原理是将字符串转换成ASCII码,然后判断ASCII是不是可以打印,如果可以,则取一字节(差不多就是字母和数字),如果不可以,则取两字节(认为是中文),但是这种方法,有一个问题,就是输入的字符串中本身包含了不可见字符时(如ASCII码中0-32范围内的),也是不可打印的,则应该取2字节,但是这些不可打印的字符本身只有一字节,这时取2字节的话,就会将后面的字符串错位取了,分割就出错了。当然,如果不包含不可见字符,只包含了常规的字母、数字、中文、标点符号等则是可以正常分割成数组的。
    " `; O' y+ h+ a% U
    ; F8 E0 B" n, O" K. x- f: f' x( m下面第二种方法,则是我根据网友提供的方法,修改的方法。这里主要是利用中文字符的ASCII编码范围来判断,GB2132编码字符集中,中文的ASCII码范围是161-254,双字节表示,一个区码,一个位码。那么我们可以利用转换后的ASCII码是不是在161-254范围内来判断,如果在这个范围内,则认为是中文,取2字节;如果不在这个范围内,则认为是非中文,取1字节,这1字节,则不管它是不是可见字符或可打印字符。当然,这种方法,可能仍然存在问题,如GB2132字符集外的汉字、日文、韩文等双字节,或者是UTF8等3字节表示的汉字等。如果是这种情况,那就要做更多的判断。
    ' h; Y3 o5 V$ C& [
    % G9 o) \/ \2 l4 g
    $ y, I. F! k' J' O* Q! c& s

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册会员

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    淘宝机器视觉商城

    Archiver|手机版|小黑屋| 机器视觉之家|东莞市华动智能科技有限公司 ( 粤ICP备17078359号-2 ) |网站地图

    GMT+8, 2018-10-23 04:13

    Powered by shixinhua.com X3.4

    © 2009-2018 VISIONBBS.COM 浏览量:

    快速回复 返回顶部 返回列表