安卓|实用编程小技巧:Java语言如何从一段文字中取出所有英文单词

安卓|实用编程小技巧:Java语言如何从一段文字中取出所有英文单词

有些时候我们会有一个需求 , 就是从一段中英文混合的文本中把所有的英文单词统计出来 , 例如如下的一段话:
“2.精通spring bootspring cloud , struts2等框架 , 有微服务 , 微应用的开发与实施经验;3.对大数据有一定的了解 , 熟悉j2ee、hadoop、kafka、spark、elasticsearch , hbase等大数据相关技术及框架;4.熟悉oraclepostgresqlmysqlredis等数据库相关技术;5.熟悉Vue、Webpack、Node.js、ElementUI、Jqurey、Ajax、json、git/svn等 , 有一定的Vue前端开发项目经验;”
在这段话里 , 如果我们需要把其中所有的英文单词统计出来 , 从而来统计一下各种技术的出现频率的话 , 应该怎么做呢?
很显然 , 这种情况最容易的方法应该就是神器正则表达式了 。
正则表达式无疑是解决这类问题最简单的方法了 。 那么我们来看一看 , 如果用正则表达式的话 , 这个问题应该怎么解决 。
首先我们注意到 , 有些技术的名字中间是有空格的 , 类似于spring boot、spring cloud等 , 这种情况我们显然不能把它们分成两个单词 。 另外还有一些是中间或末尾带数字的 。 另外还有一个Node.js是中间带句点的 。
考虑到这些情况之后 , 我们可以写出一种能够匹配以上所有技术名称的正则表达式了 , 如下所示:
[A-Za-z
[A-Za-z0-9_\\\\s\\\\.
*[A-Za-z0-9_
*
最终 , 我们的代码如下:
HashMap<String Integer>result=newHashMap<String Integer>();
Stringdata=https://mparticle.uc.cn/"2.精通spring bootspring cloud , struts2等框架 , \"
+\"有微服务 , 微应用的开发与实施经验;3.对大数据有一定的了解 , \"
+\"熟悉j2ee、hadoop、kafka、spark、elasticsearch , \"
+\"hbase等大数据相关技术及框架;4.熟悉oraclepostgresql\"
+\"mysqlredis等数据库相关技术;5.熟悉Vue、Webpack、\"
+\"Node.js、ElementUI、Jqurey、Ajax、json、git、svn等 , \"
+\"有一定的Vue前端开发项目经验;\";
Stringregex=\"[A-Za-z
[A-Za-z0-9_\\\\s\\\\.
*[A-Za-z0-9_
*\";
Patternpattern= Pattern.compile(regex);
Matchermatcher=pattern.matcher(data);
System.out.println(\"Words in the given String: \");
while(matcher.find()) {
if(result.get(matcher.group()) !=null)
result.put(matcher.group()result.get(matcher.group()) + 1);
else
result.put(matcher.group() 1);

System.out.println(result);
输出结果如下:
Words in the given String:
{oracle=1 spring cloud=1 Vue=2 Node.js=1 svn=1 Jqurey=1 redis=1 spring boot=1 struts2=1 git=1 elasticsearch=1 postgresql=1 spark=1 kafka=1 j2ee=1 ElementUI=1 json=1 mysql=1 hadoop=1 Webpack=1 hbase=1 Ajax=1
可见 , 该正则表达式完整地输出了所有的技术名称 。 不过这个正则表达式并不简洁 , 如果读者们有更简洁的表达方式的话 , 欢迎私信或留言哦 。
喜欢本文的话 , 欢迎关注活在信息时代哦:)
【安卓|实用编程小技巧:Java语言如何从一段文字中取出所有英文单词】