请问怎么从51单片机字符串SBUF里的一串字符串中取出两个引号之间的字符串啊

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如何取name "David Beckham"中的name和David Beckham这两个值,我取得不对。我思路似乎先空格划分得到第一个name,然后截取“”中内容。
String str = varArr[j];//比如值为 name "David Beckham"
String[] tempArr = str.split(" ");
String key = tempArr[0];
String value = str.substring(str.indexOf("\""), str .indexOf("\""));
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
别用空格切分,直接用双引号切分,取前两个字符串,然后trim()一下就好了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我还是习惯用split,虽然感觉比较low。
String[] tempArr = str.split("\"");
String key = tempArr[0].trim();
String value = tempArr[1].trim();
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你需要lastIndexOf
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
难道正确的方法不是用String.split()?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
split在这里不合理,用正则准确分割
import java.util.regex.M
import java.util.regex.P
public static void main(String[] args) {
Pattern p = Pattern.compile("(name)\\s+\"(\\w+\\s+\\w+)\"");
Matcher m = p.matcher("name \"David Beckham\"");
if (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。51单片机串口通信程序 只需要接收缓冲区收到一串字符串 但是字符串一_百度知道
51单片机串口通信程序 只需要接收缓冲区收到一串字符串 但是字符串一
51单片机串口通信程序 只需要接收缓冲区收到一串字符串 但是字符串一直发送 无法停止求解决 程序如下
void SendData(unsigned char x)
while(busy);
void SendString(unsigned char *string)
while(*string)
我有更好的答案
只需要接收缓冲区收到一串字符串 但是字符串一直发送...--题目,看不明白。--你收到一串就不用再收了,你管他发不发干嘛?
关键是我收到不止一串 会不断的收到 单片机会不断发送给pc端 没有停止
收到了,确认无误后,应该给对方一个回信。对方,就不发送了。-------------------双方通信,要制定一个协议,双方都要遵守。数据的头,是什么字节;数据的字节数,是多少;数据的末位,是什么校验方法;。。。。。。你的协议是怎么制定的?
协议?数据帧的发送协议吗?
你百度一下《串行通信协议》吧。
我的程序中有判断是否结束的while字符串发送函数 我明白串口通信协议意思 最开始加过这个判断是不是发送完毕 但是完全不管用 一直在循环发送给pc端
采纳率:64%
51单片机串口通信程序设计有什么要求。
就是想让单片机向电脑发送一串字符串 就发送一遍 但是我的问题出现在一直循环发送这串字符串
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。怎么写提取两个字符之间的字符串(正则表达式)_百度知道
怎么写提取两个字符之间的字符串(正则表达式)
+&#92我写的正则表达式是提取双引号中的字符串,如下;&quot:\&
我有更好的答案
&)这样匹配出来的正则表达式不包括前后引号不过我觉得在加号后面要加个问号;(,当然得看具体情况了(?&=\&).+?(?=\&)直接加个圆括号可以这样写,不好意思,刚才多打了个感叹号(?&=\&).+(?=&#92,提取正则表达式的第一组数据不行吗?\&quot
\&(.+)\&加上小括号不起作用啊,提取的字符串还是包含了双引号。 再问一下,我是用google go 语言(和c语言差不多的,用正则表达式的程序执行效率会不会比较低?
package&mainimport(&&&&&fmt&&&&&&regexp&)var&myExp=regexp.MustCompile(&\&(?P&first&.+)\&&)&func&main(){&&&&str:=&this&is&a&\&test\&&&&&&match:=myExp.FindStringSubmatch(str)&&&&mmap:=make(map[string]string)&&&&for&i,name:=range&myExp.SubexpNames(){&&&&&&&&&&if&name==&first&{&&&&&&&&&&mmap[name]=match[i] }&&&&&}&&&&&&&&fmt.Println(mmap[&first&])&&&&}上面的GO程序打印出\&.+\&这个正则匹配的字符串去掉双引号后的结果,main函数中的str变量为要从中提取的字符串没见过写正则要这么复杂的语言,估计也没几个人会学
采纳率:81%
来自团队:
为您推荐:
其他类似问题
正则表达式的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机串口通信中字符发送的总结
51单片机串口通信中字符发送的总结
菜鸟我今天在练习51单片机串口通信时,对字符的发送方式总结了一下,有以下三种方式,若有大侠看到请勿见笑。/*字符发送方式一*/#include&reg52.h&#define uchar unsigned char#define uint unsigned intuchar flag,a,i;uchar code table[]=&I get &;void init
菜鸟我今天在练习51串口通信时,对字符的发送方式总结了一下,有以下三种方式,若有大侠看到请勿见笑。/*字符发送方式一*/#include&reg52.h&#define uchar unsigned char#define uint unsigned intuchar flag,a,i;uchar code table[]=&I get &;void init(){TMOD=0x20;TH1=0TL1=0TR1=1;SM0=0;SM1=1;REN=1;//TI=1;EA=1;ES=1; }void main(){init();while(1){if(flag==1) {ES=0;for(i=0;i&6;i++){SBUF=table[i];
while(TI==0);
TI=0;} SBUF=a;
while(TI==0);
TI=0;ES=1;flag=0;}}}void ser() interrupt 4{a=SBUF;RI=0;P1=~P1;flag=1;}/*字符发送方式二*/#include&reg52.h&#include&stdio.h&#include&intrins.h&#define uchar unsigned char#define uint unsigned intuchar flag,a,i=0;uchar code table[]=&I get &;void init(){TMOD=0x20;TH1=0TL1=0TR1=1;SM0=0;SM1=1;REN=1;//TI=1;EA=1;ES=1; }void main(){init();while(1){if(flag==1) {ES=0;while(table[i]!='\0')//注意字符串末尾为'\0'{SBUF=table[i];
while(TI==0);
TI=0;i++;}i=0;//用完了i记得清零 SBUF=a;
while(TI==0);
TI=0;ES=1;flag=0;}}}void ser() interrupt 4{a=SBUF;RI=0;P1=~P1;flag=1;}/*字符发送方式三--打印函数(重要)*/#define uint unsigned intuchar flag,a,i=0;uchar code table[]=&I get &;void init(){TMOD=0x20;TH1=0TL1=0TR1=1;SM0=0;SM1=1;REN=1;//TI=1;EA=1;ES=1; }void main(){init();while(1){if(flag==1) {ES=0;TI=1;//用printf,puchar,_getkey等函数要先进行初始化串行口//该函数在头文件中的定义如下//while(!TI);// TI=0;// return(SBUF=a);//所以用打印函数时如果没有将TI设置为1,执行到该句会进入死循环printf(&I get %c\n&,a);
while(TI==0);
TI=0;ES=1;flag=0;}}}void ser() interrupt 4{a=SBUF;RI=0;P1=~P1;flag=1;}
上一篇:已经是第一篇
型号/产品名
深圳市汇盛实业有限公司
深圳市汇盛实业有限公司
广州智晶电子有限公司查看:4520|回复:1
例如输入为& &12,321,421如何读取a=12, b=321,&&c=421。
用C++的方法,c语言我看不懂,
版规,发帖可获2无忧币
C++和C语言在处理这个问题又没什么本质区别
就是用strtok
你可以看看这个}

我要回帖

更多关于 单片机接收字符串 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信