常用字符串解析与处理方法
来源:互联网 发布:youtube免费翻墙软件 编辑:程序博客网 时间:2024/05/18 03:31
常用字符串解析与处理方法
DanielLee 2014-9-25
工作一年多来,发现经常会用到字符串的解析与处理,比如编写路由器控制软件时,要对路由器返回的命令进行解析;对GPS注册网络时要进行命令的组合与返回值的判断;采集北斗数据时,要从标准GGA、GSA、RMC等协议中分类参数等等,其实都是如何处理字符串的问题,把字符串处理好,可以很容易的处理命令的交互。
一、字符串中变量提取
① scanf,可以通过特定的格式将一个字符串的变量直接分离出来,如下:
对“IPAddr=192.168.2.1:12345,ID=25535,Time=3,Speed=10END”进行参数提取可以用
paraCnt= sscanf(paraStr,"%[^=]=%[^:]:%[^,],%[^,],%[^,],%[^E]",headerTemp,ipAddrTemp,portTemp,idTemp,timeTemp,aralmSpeedTemp)来处理。这其中有4个变量,提取方法简单。值得注意的是其中几个数字的长度是会发生变化的,如果单纯靠字符的位置进行解析有时是会出错的,scanf利用特殊符号进行分隔可以有效解决这个问题。
再举一个例子,如果你需要处理GPS或BD发来的定位信息,例如“$GPGGA,063952.000,4002.229934,N,11618.096855,E,1,4,2.788,37.254,M,0,M,,*71”
每条字符串可能包含很多变量,有的甚至可达20-30个,再使用之前的方法显然会很不方便。这时可以结合字符串设置的规则与scanf,比如在GPS或BD协议中每个变量之间都使用“,”隔开,这样通过查询是第几个变量后再通过scanf就可以把变量提取出来了。
使用这个方法在字符串提取浮点数时尤为有用。
②专用库函数。我们很容易遇到去判断与解析比如IP地址、MAC地址、子网掩码等字符串的情况,如果自己去实现是需要花一点时间编写和调试,后来发现可以使用NetASCII_Str_to_MAC()、NetASCII_MAC_to_Str()、NetASCII_Str_to_IP()、NetASCII_IP_to_Str()等一系列的函数去处理,即简单又可靠,岂不是比自己写省时省事,高大上多了。
二、变量转为字符串
sprintf(),主要功能是把格式化的数据写入某个字符串中,是个变参函数。例如通过以下方式就可以把存储在数组中的IP地址转化为AT指令中的字符串命令了
strcat(TCPCmd,(char*)"AT+CIPSTART=\"TCP\",\"");
for(i=0;i<3;i++){
sprintf(tempBuf,"%d",IPpara[i]);
strcat(TCPCmd,tempBuf);
strcat(TCPCmd,(char *)".");
}
三、其他
在处理浮点数时,也会遇到与数组转换的情况,通常是设置一个结构体或共用体,来逐字节的读出,把浮点数转为数组比较或存储,反过来逐字节存入后,整体读出就可以得到浮点数的值了。
- 常用字符串解析与处理方法
- 常用字符串解析与处理方法
- Shell处理字符串常用方法
- Shell处理字符串常用方法
- Shell处理字符串常用方法
- JavaScript常用字符串处理方法
- Shell处理字符串常用方法
- string字符串常用处理方法
- Shell处理字符串常用方法
- 常用的字符串处理方法
- Shell处理字符串常用方法
- Shell常用处理字符串方法
- 常用的字符串处理方法
- JavaScript常用字符串处理方法
- python字符串处理常用方法
- iOS字符串常用处理方法
- Golang 常用字符串处理方法
- 字符串处理与string解析
- java calender 把string转换成date类型并获取为星期几
- 使用GitHub + Hexo搭建个人博客(十)- 发表新博客
- 谁说乔布斯不在意顾客意见的
- 一个有意思的算法,Container With Most Water
- 养老资讯网
- 常用字符串解析与处理方法
- HTTP代理原理以及HTTP隧道技术
- aspnet_regsql在哪里 怎么运行它 以及功能介绍
- SQL SERVER 2005 数据库状态为“可疑”的解决方法
- Sqlite中使用SQL与其他数据库的区别
- leetcode-3Sum
- overridePendingTransition无效果解决方案
- Linux 的多线程编程的高效开发经验
- BZOJ 1493 NOI 2007 项链工厂 Splay