"你好,{#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);}}输出usernamegoodsexpresstimephone
开满天机
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。
添加回答
举报
0/150
提交
取消