为了账号安全,请及时绑定邮箱和手机立即绑定

解析出字符串中的特定值

解析出字符串中的特定值

炎炎设计 2019-04-19 16:29:18
"你好,{#username#},你的宝贝{#goods#}已由{#express#}"于{#time#}发出,请注意收货。联系电话{#phone#}。"从以上文本中想获得"username,goods,express,time,phone"的字符串(注意用逗号隔开),或者包含上述字符串的数组。请用JS和java分别实现,谢谢!
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

Java版的
@WestFarmer已经写了javascript的,我来补java的
publicstaticListgetNames(Strings){
Patternpattern=Pattern.compile("\\{#(\\w+)#\\}");
Matcherm=pattern.matcher(s);
Listresult=newArrayList();
while(m.find()){
result.add(m.group(1));
}
returnresult;
}
测试
publicstaticvoidmain(String[]args){
Strings="你好,{#username#},你的宝贝{#goods#}已由{#express#}于{#time#}发出,请注意收货。联系电话{#phone#}。";
for(Stringname:getNames(s)){
System.out.println(name);
}
}
输出
username
goods
express
time
phone
                            
查看完整回答
反对 回复 2019-04-19
?
开满天机

TA贡献1786条经验 获得超13个赞

打开chrome控制台(F12键),在控制台输入以下内容:
vars12="你好,{#username#},你的宝贝{#goods#}已由{#express#}于{#time#}发出,请注意收货。联系电话{#phone#}。"
varreg2=/{#(\w+)#}/g;
varresults=[];
vartmp;
while((tmp=reg2.exec(s12))!=null){results.push(tmp[1])}
console.log(results);
结果输出:["username","goods","express","time","phone"]
原理:正则表达式/{#(\w+)#}/g中括号之间定义的部分是一个分组,是我们希望提取的值。但是注意的是,整个正则表达式也是一个分组,这就是为什么调用reg2.exec返回的是一个数组,数组中第一项就是整个正则表达式对应的分组,第二个才是我们定义的那个分组(\w+),当exec没有匹配到时就会返回null。
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 529 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信