石鑫华视觉 发表于 2018-9-28 17:30:36

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

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


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

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


页: [1]
查看完整版本: LabVIEW包含字母数字中文和不可见字符串拆分为数组

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