遇到这样的问题,常规的思路估计就是遍历String,然后逐个对比。下面先看循环遍历

循环遍历

private static int getNum(String originStr, String targetStr){  int result = 0;  for (int i = 0; i < originStr.length(); i++) {    if (targetStr.equals(originStr.substring(i, i + 1))){      result ++;    }  }  return  result;}

这样虽然直观,但感觉效率不行。继续研究String中的方法,很快我们想到了indexOf方法,该方法可以获取指定字符串在String对象的位置。

indexOf方法

private static int getNum(String originStr, String targetStr){  int res = 0;  int i = originStr.indexOf(targetStr);  while (i != -1){    i = originStr.indexOf(targetStr,i+1);    res++;  }  return res;}

这样的方法看上去,好像不太直观,此时想到split方法,该方法可以根据字符串切分原字符串,似乎可以通过切割后的数组数量达到计算效果

split方法

private static int getNum(String originStr, String targetStr){  int start = originStr.startsWith(targetStr) ? 1 : 0;  int end = originStr.endsWith(targetStr) ? 1 : 0;  String[] split = originStr.split(targetStr);  return split.length - 1 + start + end;}

split方法使用需要注意边界问题,如果不注意,容易漏计算。除了这些还有其他方案吗?

replaceAll方法

private static int getNum(String originStr, String targetStr){  String result = originStr.replaceAll(targetStr, "");  int i = originStr.length() - result.length();  return  i;}

通过replaceAll方法需要注意targetStr中是否有需要转义的字符串。

测试各个方法的效率

将每个方法执行10000次,测得每个方法耗时如下

遍历:10msreplaceAll:35mssplit:11msindexOf:2ms

因此建议使用indexOf,大家还有没有更高级的方法,欢迎留言。

c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量相关推荐

  1. java字节字符_java按字节截取带有汉字的字符串的解法(推荐)

    由于接口使用的oracle字段长度为固定字节数,然后传进来的字符串估计比数据库字段的总字节数要大,那么截取小于数据库字节数的字符串. 自己参考网上的例子,整了个递归调用就可以了,因为截取的字符字节长度 ...

  2. python中复数采用什么方法提取实部_讲解Python3中NumPy数组寻找特定元素下标的两种方法 python3中怎样实现对一个复数取实部...

    python numpy 数组提取某一列大于某一直的数据 import numpy as npa=np.arange(9).reshape(3,3)12 a Out[31]: array([[0, 1 ...

  3. java中如何读写文件_JAVA: 读写文件的几种方法

    如果您使用java8,可以也参考这篇文章:JAVA: Java8流逐行读取文件 import java.io.BufferedReader; import java.io.BufferedWriter ...

  4. 堆叠自编码器中的微调解释_25种深刻漫画中的编码解释

    堆叠自编码器中的微调解释 by freeCodeCamp 通过freeCodeCamp 25种深刻漫画中的编码解释 (Coding Explained in 25 Profound Comics) W ...

  5. C 语言实例 - 删除字符串中的特殊字符

    C 语言实例 - 删除字符串中的特殊字符C 语言实例 C 语言实例 删除字符串中的除字母外的字符. 实例 #include<stdio.h>int main() {char line[15 ...

  6. c语言实现文件数据删除视频,如何用c语言实现删除文件中指定的数据;例如

    匿名用户 1级 2012-05-21 回答 你的描述不清晰,B1和B2两个结构数组,到底要删除哪个?B[2]是肯定不对的,这两个数组的长度都是2,下标只能是0和1,即B1[0], B1[1], B2[ ...

  7. java 字符串删除字符_Java基础(一)字符串之如何删除指定的字符

    需求说明: 在Java中,如何删除字符串中指定位置的字符? 解决方式: 在Java中并没有提供一个直接删除字符串中字符的方法,想要删除字符需要自己封装一个方法实现 方法一:通过从前往后循环每一个字符, ...

  8. ACMNO.40 C语言-子串 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串

    题目描述 有一字符串,包含n个字符. 写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串. 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入 6 abcdef 3 样 ...

  9. R语言使用str_split函数和str_split_fixed函数将字符串分割(分裂、split)成几个部分:str_split函数使用指定的字符或者字符串分割字符串、str_split_fixed

    R语言使用str_split函数和str_split_fixed函数将字符串分割(分裂.split)成几个部分:str_split函数使用指定的字符或者字符串分割字符串.str_split_fixed ...

  10. 将一个数组中的字符串用指定字符分割开,分别放到另一个数组中

    #include "stdafx.h" #include <stdio.h> #include <string.h> #pragma warning(dis ...

最新文章

  1. Jenkins配置与使用
  2. 第5章 Python 数字图像处理(DIP) - 图像复原与重建3 - 爱尔兰(伽马)噪声
  3. linux备份日志文件脚本,Linux篇:Shell脚本实现Gitlab双备份
  4. python中的文件父路径怎么表达_python中的文件父路径怎么表达_如何在Python中访问父目录...
  5. 金融资讯数据服务平台建设实践
  6. FFmpeg源代码简单分析:libavdevice的avdevice_register_all()
  7. (三) 初识XMAL
  8. oracle kup04040,ORA-20011 ORA-29913 and ORA-29400错误的说明
  9. 0基础怎么学习SEO?
  10. I DEA出现Spring配置错误:class path resource [.xml] cannot be opened because it does not exist
  11. 步进电机基础(2.6)-直线步进电机
  12. 华纳媒体将持有拉美和加勒比海西班牙语地区HBO品牌服务的全部所有权,包括所有HBO、MAX、Cinemax和HBO Go服务
  13. SqlSugar.SqlSugarException: English Message : Connection open error . 给定关键字不在字典中
  14. Swift编程语言简介
  15. 中国人必须知道的76个常识。。。看了才发现,自己知道的实在太少了
  16. 痞子衡嵌入式:ARM Cortex-M文件那些事(3)- 工程文件(.ewp)
  17. python短路与_python的“短路”效应
  18. 香港科技大学(广州)信息枢纽手册
  19. 电容式液位传感器VFS02-C
  20. Real-Time Rendering 4th 译文《一》

热门文章

  1. 换个角度看敏捷1-敏捷问题解决方式
  2. Hardfault 2
  3. Linux 802.11 Driver Developer’s Guide
  4. 关于Webview带参访问服务器
  5. java中类型转换的造型_Java-类型转换 - 吉胖子很瘦的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. python取百位数个位数_使用Python把数值形式的金额变成人类可读形式
  7. Java中的对象序列化操作
  8. C++中变量可以在需要时定义
  9. 大二上期计算机试题答案,2019年对口升学班上期期末计算机网络技术试卷及答案知识讲解.doc...
  10. 前端php解密,转发:RSA实现JS前端加密,PHP后端解密