首页 > Java >  Java 如何计算字符串中字符的出现次数?

 Java 如何计算字符串中字符的出现次数?

上一篇 下一篇

我有字符串

a.b.c.d

我想以惯用的方式计算“.”的出现次数,最好是单行。

(之前我把这个约束表达为“没有循环”,以防你想知道为什么每个人都试图在不使用循环的情况下回答)。

分割线

网友回答:

怎么样。它下面不使用正则表达式,所以应该比其他一些解决方案更快,并且不会使用循环。

int count = line.length() - line.replace(".", "").length();

分割线

网友回答:

我的“惯用单行词”是:

int count = StringUtils.countMatches("a.b.c.d", ".");

当它已经在公共语言中时,为什么要自己写它?

Spring Framework对此的单行代码是:

int occurance = StringUtils.countOccurrencesOf("a.b.c.d", ".");

分割线

网友回答:

总结其他答案以及我所知道的所有方法,使用一行代码:

   String testString = "a.b.c.d";

1)使用Apache Commons

int apache = StringUtils.countMatches(testString, ".");
System.out.println("apache = " + apache);

2)使用Spring Framework的

int spring = org.springframework.util.StringUtils.countOccurrencesOf(testString, ".");
System.out.println("spring = " + spring);

3) 使用替换

int replace = testString.length() - testString.replace(".", "").length();
System.out.println("replace = " + replace);

4) 使用替换全部(案例 1)

int replaceAll = testString.replaceAll("[^.]", "").length();
System.out.println("replaceAll = " + replaceAll);

5) 使用替换全部(案例 2)

int replaceAllCase2 = testString.length() - testString.replaceAll("\.", "").length();
System.out.println("replaceAll (second case) = " + replaceAllCase2);

6) 使用拆分

int split = testString.split("\.",-1).length-1;
System.out.println("split = " + split);

7) 使用 Java8(案例 1)

long java8 = testString.chars().filter(ch -> ch =='.').count();
System.out.println("java8 = " + java8);

8)使用Java8(案例2),对于Unicode可能比案例1更好

long java8Case2 = testString.codePoints().filter(ch -> ch =='.').count();
System.out.println("java8 (second case) = " + java8Case2);

9) 使用字符串标记器

int stringTokenizer = new StringTokenizer(" " +testString + " ", ".").countTokens()-1;
System.out.println("stringTokenizer = " + stringTokenizer);

来自评论:小心StringTokenizer,对于a.b.c.d,它会工作,但对于…公元前….d或…a.b.c.d或a.b.c…d…等。它行不通。它只是会算数.字符之间只有一次

更多信息在 github

性能测试(使用 JMH,模式 = 平均时间,得分更好):0.0100.351

Benchmark              Mode  Cnt  Score    Error  Units
1. countMatches        avgt    5  0.010 ±  0.001  us/op
2. countOccurrencesOf  avgt    5  0.010 ±  0.001  us/op
3. stringTokenizer     avgt    5  0.028 ±  0.002  us/op
4. java8_1             avgt    5  0.077 ±  0.005  us/op
5. java8_2             avgt    5  0.078 ±  0.003  us/op
6. split               avgt    5  0.137 ±  0.009  us/op
7. replaceAll_2        avgt    5  0.302 ±  0.047  us/op
8. replace             avgt    5  0.303 ±  0.034  us/op
9. replaceAll_1        avgt    5  0.351 ±  0.045  us/op

模板简介:该模板名称为【 Java 如何计算字符串中字符的出现次数?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 154次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-14
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信公众平台 自适应 单页式简历模板 微信素材 企业网站 微信图片 html5 响应式 微信文章 微信模板
您可能会喜欢的其他模板