1.题目:查找’abcoefoxyozzopp’中所有o出现的位置以及出现的次数
2.JS实现
1.实现思路
1.首先利用indexOf(‘要查找的字符’)方法找到第一个字符o出现的位置
var index = str.indexOf(‘o’);
2.然后在字符o第一次出现的位置后面继续查找其他的字符o,
利用indexOf(‘要查找的字符’,[index + 1])方法
3.循环操作,只要不等于 -1 就一直查找
2.代码演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>查找字符串中某个字符出现的次数</title>
<script>
/*
题目:查找'abcoefoxyozzopp'中所有o出现的位置以及出现的次数
实现思路:
1.首先利用indexOf('要查找的字符')方法找到第一个字符o出现的位置
var index = str.indexOf('o');
2.然后在字符o第一次出现的位置后面继续查找其他的字符o,
利用indexOf('要查找的字符',[index + 1])方法
3.循环操作,只要不等于 -1 就一直查找
*/
var str = 'abcoefoxyozzopp';
var count = 0; // 记录字符o出现的次数
// 1.先找到字符o第一次出现的索引位置
var index = str.indexOf('o');
// console.log(index); // 3
// 接下来从 索引 4 的位置开始查找下一个字符 o
while (index !== -1) {
console.log(index);
count++;
index = str.indexOf('o',index + 1);
}
console.log('字符 o 总共出现的次数是:' + count);
// 举一反三:查找数组中某一个元素出现的索引位置以及次数
var arr = [1,2,3,4,1,5,6,7,8,1,9,1];
// 找到元素 1 首次出现的位置
var index = arr.indexOf(1);
var number = 0; // 记录元素 1 出现的次数
// console.log(index); // 0
// 然后在循环查找下一个 元素 1 出现的位置
while (index !== -1) {
console.log(index);
number++;
index = arr.indexOf(1,index + 1);
}
console.log('元素 1 总共出现的次数是:' + number);
</script>
</head>
<body>
</body>
</html>
3.Java实现
1.代码演示
package cn.xuguowen.exer;
import org.junit.Test;
/**
* @author xuguowen
* @create 2021-04-13 15:04
* @Description String方法的使用
*/
public class StringTest02 {
/*
题目:获取一个字符串在另一个字符串中出现的位置以及次数
例如:获取"ab"在"abkkcadkabkebfkaabkskab"中出现的次数
*/
/**
* 查找subStr在mainStr中出现的位置以及次数
* @param mainStr
* @param subStr
* @return
*/
public int getSubStrCount(String mainStr,String subStr){
// 如果找到了第一次出现的位置之后,那么下次应该从index + subStr.length的位置开始查找
int count = 0; // 记录子串在主串中出现的次数
int index = 0; // 记录下次查找的位置
// 1.子串的长度必须小于或者等于主串的长度,这样才可以在主串当中找到子串的
if (mainStr.length() >= subStr.length()){
// 方式一:
/*// 如果在主串中找到字串,会返回子串在主串中的位置,不等于 -1 说明找到了
while ((index = mainStr.indexOf(subStr)) != -1){
count++;
// 开始下一次的查找,对主串进行截取,将找到的子串去掉,重新赋值给主串
// 对字符串的拼接是非常耗时的,需要对此方法进行改进
mainStr = mainStr.substring(index + subStr.length());
}*/
// 方式二:对方式一的改进
// 需要对index进行重新赋值,不能始终从 0 开始
while ((index = mainStr.indexOf(subStr,index)) != -1 ){
count++;
// index = index + subStr.length();
index += subStr.length();
}
// 返回count
return count;
}else {
// 子串的长度大于主串,指定在主串当中找不到子串了,所以次数为 0
return 0;
}
}
// 调用方法测试
@Test
public void testGetSubStrCount(){
String mainStr = "abkkcadkabkebfkaabkskab";
String subStr = "ab";
int count = getSubStrCount(mainStr, subStr);
System.out.println(count);
}
}