LabVIEW编程实例:生成随机字符串并查找某字符出现的次数及位置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LabVIEW编程实例:生成随机字符串并查找某字符出现的次
数及位置
实例说明
使用LabVIEW编程语言,编写一个VI程序,要求如下:
l 能够生成指定长度的a-z之间的随机字符串
l 能够查找某个字符在字符串中出现的次数及位置
实现后的软件运行界面如下图所示:
编程思路
对于第一个问题,要求生成a-z之间的随机字符串,本质上是在LabVIEW中如何生成字母a-z对应的ASCII码即97-122之间的随机整数。
对于第二个问题,在生成的字符串中查找某个字符出现的次数及位置,有两种方法可以解决,一是转换为一维数组中某元素的搜索问题,即在一维数组中搜索该字符对应的ASCII码数值在数组中出现的次数及位置;二是直接在字符串中使用LabVIEW提供的字符串操作的相关函数搜索该字符。
LabVIEW中的实现代码
根据上面的编程思路,下面给出该实例的程序框图实现代码,如下图所示:
程序框图中,左面for循环用于产生指定长度的随机字符串,右面while循环用于查找某字符出现的次数及位置,下面分别进行说明。
1、生成指定长度的a-z之间的随机字符串
在程序框图中,首先使用“字符串到字节数组转换”函数求得z和a对应的ASCII码值,其返回值是一个数组,对应了产生随机字符串ASCII码值的最大值(122)和最小值(97)。
在for循环中,循环次数设为指定的生成字符串的长度,在循环内部,生成97-122之间的随机数并将其转换为U8类型的数值,for循环外即为所产生随机字符串的ASCII码值数组,最后使用“字节数组至字符串转换”函数将其转换为字符串即可。
注意,“字节数组至字符串转换”函数要求的输入是U8型的数组,所以要在for循环内部将产生的随机数强制转换为U8类型。
2、查找某个字符在字符串中出现的次数及位置
在上面程序框图中,采用的是直接在字符串中用LabVIEW提供的字符串操作函数搜索该字符的方法。
在while循环中,使用“匹配模式”函数在字符串中搜索该字符,关键的地方是,该函数在每次搜索时需要一个偏移量参数来限定本次从哪个位置开始搜索,当搜索到该字符时,会返回搜索到该字符的位置,当未搜索到时,会返回-1。
所以在while循环中使用了移位寄存器,其初始值设为0,每次循环后将搜索到的位置加1后作为下次搜索的起始位置,直到该函数返回为-1时,while循环结束。
当退出while循环时,i的值即为搜索到指定字符的次数。
将每次搜索到的位置输出到while循环外,为一个数组,该数组的最后一个元素值是-1,即while最后一次循环时的值,所以将其最后一个值使
用“删除数组元素”函数去掉,数组中剩下的所有元素即为该字符出现的所有位置。
总结
至此,使用上面的编程思路及框图程序就实现了本文开头所提出的题目要求。
该例子涉及到的知识点包括:随机数产生、数值与字符串相互转换、for及while循环、元素搜索、移位寄存器、数组操作等。