今天完成的事情:今天尝试了js字符串的提取,去重,判断字符的出现的次数等
明天计划的事情:继续尝试自己写一些简单的程序验证之前学的的熟练度
遇到的问题:实际操作太少每次都需要回顾一下还是要多实际练习熟练一下
收获:今天尝试了几种操作字符串的方法
查询子字符串
判断字符串内是否包含子串,不少开发者会使用for循环来判断,而忘记了JavaScript提供子串函数:
indexOf(),该Of() 方法对大小写敏感。返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。() 方法返回介于两个给定元素之间的所有祖先元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var mystr = "Hello world!";
var index = mystr.indexOf("llo"); //2
var index1 = mystr.indexOf("l"); //2
var index2 = mystr.indexOf("l", 3); //3
console.log(index);
console.log(index1);
console.log(index2);
</script>
</body>
</html>
运行结果

返回指定位置的字符或其字符编码值
查找给定位置的字符,可以使用如下函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var mystr = "Hello World!";
var index = mystr.charAt(7); //o
console.log(index);
</script>
</body>
</html>
运行结果

字符串连接
可以将两个或多个字符串进行加法操作,同时可以使用JavaScript提供的concat函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var mystr1 = "Hello";
var mystr2 = " world,";
var mystr3 = "Hello";
var mystr4 = "guoxiansheng";
var newStr = mystr1.concat(mystr2 + mystr3 + " " + mystr4); //Hello world,Hello guoxiansheng
console.log(newStr);
</script>
</body>
</html>
运行结果

字符串切割和提取
有三种可以从字符串中抽取和切割的方法:
第一种,slice()函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var mystr = "hello world!";
var sliceStr1 = mystr.slice(-3); //ld!
var sliceStr2 = mystr.slice(-3, -1); //ld
var sliceStr3 = mystr.slice(3); //lo world!
var sliceStr4 = mystr.slice(3, 7); //lo w
console.log(sliceStr1);
console.log(sliceStr2);
console.log(sliceStr3);
console.log(sliceStr4);
</script>
</body>
</html>
运行结果
第二种:substring()函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var mystr = "hello world!";
var sliceStr1 = mystr.substring(3); //lo world!
var sliceStr2 = mystr.substring(3, 7); //lo w
console.log(sliceStr1);
console.log(sliceStr2);
</script>
</body>
</html>
运行结果

第三种:substr()函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var mystr = "hello world!";
var sliceStr1 = mystr.substr(3); //lo world!
var sliceStr2 = mystr.substr(3, 7); //lo wo
console.log(sliceStr1);
console.log(sliceStr2);
</script>
</body>
</html>
运行结果

1.slice() 可以为负数,如果起始位置为负数,则从字符串最后一位向前找对应位数并且向后取结束位置,如果为正整数则从前往后取起始位置到结束位置。
2.substring()只能非负整数,截取起始结束位置同slice()函数一致。
3.substr()与第一、第二种函数不同,从起始位置开始截取,结束位置为第二个参数截取的字符串最大长度。
以上三种函数未填第二参数时,自动截取起始位置到字符串末尾。
字符串去重
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var str = "aahhgggsssjjj";
function removeRepeat(msg) {
var res = [];
var arr = msg.split("");
for (var i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) == -1) {
res.push(arr[i]);
}
}
return res.join("");
}
removeRepeat(str); //ahgsj
console.log(removeRepeat(str));
</script>
</body>
</html>
运行结果

判断字符串中字符出现的次数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
/*
1.先实现字符串去重
2.然后对去重后的数组用for循环操作,分别与原始数组中各个值进行比较,如果相等则count++,循环结束将count保存在sum数组中,然后将count重置为0
3.这样一来去重后的数组中的元素在原数组中出现的次数与sum数组中的元素是一一对应的
*/
var str = "aacccbbeeeddd";
var sum = [];
var res = [];
var count = 0;
var arr = str.split("");
for (var i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) == -1) {
res.push(arr[i]);
}
}
for (var i = 0; i < res.length; i++) {
for (var j = 0; j < arr.length; j++) {
if (arr[j] == res[i]) {
count++;
}
}
sum.push(count);
count = 0;
}
console.log(res); //["a", "c", "b", "e", "d"]
for (var i = 0; i < res.length; i++) {
var str = (sum[i] % 2 == 0) ? "偶数" : "奇数";
console.log(res[i] + "出现了" + sum[i] + "次");
console.log(res[i] + "出现了" + str + "次");
}
</script>
</body>
</html>
运行结果

剩下的明天再继续
评论