石鑫华视觉论坛

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

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

[复制链接]
  • TA的每日心情
    擦汗
    11 小时前
  • 签到天数: 3382 天

    连续签到: 4 天

    [LV.Master]2000FPS

    发表于 2018-9-28 17:30:36 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

    注册登陆后可查看附件和大图,以及购买相关内容

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

    x
    LabVIEW包含字母数字中文和不可见字符串拆分为数组今天在群里看到一个有意思的问题,就是LabVIEW中,如何将一串包含了字母、数字、符号、中文等的字符串,逐个正确的转换为数组。

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

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


    图中提供了两种方法。上面第一种方法是网友提供的。原理是将字符串转换成ASCII码,然后判断ASCII是不是可以打印,如果可以,则取一字节(差不多就是字母和数字),如果不可以,则取两字节(认为是中文),但是这种方法,有一个问题,就是输入的字符串中本身包含了不可见字符时(如ASCII码中0-32范围内的),也是不可打印的,则应该取2字节,但是这些不可打印的字符本身只有一字节,这时取2字节的话,就会将后面的字符串错位取了,分割就出错了。当然,如果不包含不可见字符,只包含了常规的字母、数字、中文、标点符号等则是可以正常分割成数组的。

    下面第二种方法,则是我根据网友提供的方法,修改的方法。这里主要是利用中文字符的ASCII编码范围来判断,GB2132编码字符集中,中文的ASCII码范围是161-254,双字节表示,一个区码,一个位码。那么我们可以利用转换后的ASCII码是不是在161-254范围内来判断,如果在这个范围内,则认为是中文,取2字节;如果不在这个范围内,则认为是非中文,取1字节,这1字节,则不管它是不是可见字符或可打印字符。当然,这种方法,可能仍然存在问题,如GB2132字符集外的汉字、日文、韩文等双字节,或者是UTF8等3字节表示的汉字等。如果是这种情况,那就要做更多的判断。

    LabVIEW包含字母数字中文和不可见字符串拆分为数组.vi (12.71 KB, 下载次数: 74)
    回复

    使用道具 举报

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

    本版积分规则

    LabVIEW HALCON图像处理入门教程(第二版)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-11-20 19:41

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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