小妹请教字符数组问题!请师哥们帮忙~
我发送一条指令给服务器,服务器给我返回的消息格式如下:
s <
s 1,1,1,2252,8613900010001,测试-0001
s 2,3,1,2252,8613900010001,测试-0002
s 3,5,1,2252,8613900010001,测试-0003
s 4,7,1,2252,8613900010001,测试-0004
s >
我如何把这个每一行记录保存到一个数组里,然后在从数组里把它们取
出来。
取出来的时候我只想要得到:
s 1,1,1,2252,8613900010001,测试-0001
s 2,3,1,2252,8613900010001,测试-0002
s 3,5,1,2252,8613900010001,测试-0003
s 4,7,1,2252,8613900010001,测试-0004
这几行数据就行,如何做请师哥们能代码明示。
还有我接收到的消息如下:
s <
s >
那我又该如何判断我没有接收到消息内容那。请师哥们能代码明示。
小妹刚刚入行不久,请各位师哥多多指教!
------解决方案--------------------既然你的格式定义为
s <
s>
那你判断最后接收到的字符是不是 '> ' 就可以了
不过这只是最粗略的判断,更专业的做法是用正则先匹配s < s>
然后如果匹配通过,再判断总的数据长度,如果长度大于 "s < s> "长度之和,说明已经有内容了
要将内容取出来放到数组中,只需要去头去尾就好,然后简单的匹配一下就ok
好久米接分了滴说,纳分来 :)
------解决方案--------------------看出来了是短信开发。
我发送一条指令给服务器,服务器给我返回的消息格式如下:
s <
s 1,1,1,2252,8613900010001,测试-0001
s 2,3,1,2252,8613900010001,测试-0002
s 3,5,1,2252,8613900010001,测试-0003
s 4,7,1,2252,8613900010001,测试-0004
s >
其实你被欺骗了!真正返回给你的是s <\r\ns 1,1,1,2252,8613900010001,测试-0001\r\ns 2,3,1,2252,8613900010001,测试-0002.......
就是说其实有\r\n的,
所以你可以
for (int i = 0; i < 21; i++)
{
ss_port.Write(Encoding.ASCII.GetBytes( "AT+CMGR= " + i + "\r "));//Replace( "\r\n ", " ")
string temps = " ";
temps = (Encoding.ASCII.GetString(ss_port.Read(1024))).ToString().Replace( "\r\n\r\nOK\r\n ", "* ");
这是我以前的程序供参考!
其实你可以设断点就看到“真相”!!!
if (temps.IndexOf( "s 1 ") != -1)
{
再一行行看。具体要你自己设断点调试。
有空请关注清清月儿主页 http://blog.csdn.net/21aspnet/ 700篇技术帖子