读《我和Labview》Labview编程基础3
3字符串和路径数据
3.1字符串数据类型
C语言和Labview中字符串的储存都使用表示法为U8的数值数组。二者区别在于C语言中的字符串以字符“\0"作为字符串结束标志;而Labview的字符串还记录了长度信息,不需要使用特殊的结束符
字符串数据和U8数组数据在内存中相同,所以相互强制转换是有实际意义的。字符串转换成U8数组的每个元素是字符串每个字母的ASCII码,因为一个汉字是两字节,所以数组的第n和第n+1两个元素对应一个汉字。在Labviw有专门的函数用来转换U8数组和字符串:”字符串至字节数组转换”和“字节数组至字符串转换”
- 注:目前Labview在windows操作系统下不支持Unicode,更换操作系统如中文系统更换为法语系统,Windows更换为Linux,很容易会乱码
3.2字符串控件
字符串空间有下面四种不同显示格式:
1.普通显示格式:
2.''代码显示:
3.“十六进制显示”
4.“密码显示”
转义字符:
"\n" 表示换行符、"\r" 表示回车符、"\t" 表示制表符、"\s" 表示空格、"\" 表示 '' 等几个
组合框(Combo Box)控件的数据类型也是字符串,我们可以利用它来限定用户只能选择某几个字符串:
3.3数值、时间与字符串之间的的转换
、
上图是各个字符串函数。
3.3.1基础转换函数
数值和字符串之间经常需要进行转换。通常,数据在进行计算的时候必须使用数值,而显示(比如需要把数据的值嵌入一段说明文字当中)或者存入文件的时候又往往需要以字符串的形式表示。
上图中把输入的十进制数字放入字符串中显示
示例程序3-String
3.3.2字符串格式化
Labview的好多底层是跟C语言共通的
格式化写入字符串——printf()
作用:把输入的数据,按照用户指定的格式转换成字符串
上图程序中,先使用格式化字符串函数把两个输入数据插入一段字符串,然后在用同样的扫描字符串函数把数据从生成的字符串中提取出来
扫描字符串——sscanf()
作用:使用同样的格式化字符串把数据从输入的纯字符串提取出来,并转换成相应类型
注:当使用扫描字符串函数提取一段字符串%s数据时,会出现问题,正确的方式是使用正则表达式
数学 -> 脚本与公式 -> 一维二维分析 -> 字符串公式求值->Eval Formula String.vi,此vi可以用来输入字符串公式,输出实数
两个函数上端都有format string输入接线端,可以右键创建常量或者输入来配置,也可->右键菜单格式化字符串/扫描字符串->Edit Format/Scan String可以打开对话框进行快捷配置该接线端
3.3.3时间与字符串之间的转换
时间->字符串:“获取日期 / 时间字符串”函数可以把时间转换成系统默认的显示格式,得到字符串格式的数据,但是注意输出,上面输出接线端是年月日,下面是时分秒
字符串->时间:字符串格式的数据转换为时间格式,没有对应的函数,可以使用扫描字符串进行转换
3.4正则表达式
1.查找具体的某一串字符->"查找替换函数":
如查找一篇文章的所有dog单词
2.查找某一模式的字符串->"正则表达式(Regular Expression)":
是一种文本模式,包括普通字符(英文字母和数字等)和特殊字符(称为“元字符”)。正则表达式使用这些字符串来描述和匹配某个句法规则的字符串,正则表达式的格式非常繁琐,但是功能强大,效率非常高
下面两个函数,一个功能简单,运行速度快,另一个为了强大功能舍弃了部分速度
- 匹配模式函数:
会从输入字符串的第一个字符开始,一个一个与正则表达式进行匹配
- 匹配正则表达式函数: