字符串的基本使用:
多行字符串、字符串中变量的拼接。
以下分别是传统和ES6字符串的换行与变量拼接的方法:
<!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>字符串拓展</title>
</head>
<body>
<!--
字符串的拓展:
多行字符串,
字符串中拼接变量
-->
<script>
let age1 = 10;
// 没有实现换行,拼接
let msg1 = "hellohel\lohello";
// 实现换行,拼接
let msg2 = "hellohel\n\lohello";
// 加法运算拼接变量
let msg3 = "heoollll" + "njdjjskk" + age1;
/*
模板字符串基本语法:
反引号 `字符串`
替换位的使用${}
*/
let event1 = `一起去看好妹妹演唱会`;
let event2 = `
一起去看
好妹妹
演唱会`;
// let event3 = `一起去看好妹妹${age1}演唱会`;
// ${}中可以是表达式
let event3 = `一起去看好妹妹${age1+10}演唱会`;
// 推荐网站掘金
</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>字符串拓展</title>
</head>
<body>
<ul id="myUl">
<!-- <li>
<h3></h3>
<p></p>
</li> -->
</ul>
<script>
let arr = [{
title: "面试官问1: 谈谈你对JavaScript基本数据类型:BigInt的理解",
like: "200"
}, {
title: "面试官问2: 谈谈你对JavaScript基本数据类型:BigInt的理解",
like: "100"
}, {
title: "面试官问3: 谈谈你对JavaScript基本数据类型:BigInt的理解",
like: "300"
}, {
title: "面试官问4: 谈谈你对JavaScript基本数据类型:BigInt的理解",
like: "500"
}];
let myUl = document.getElementById('myUl');
let html = "";
//该方法的三个参数:forEach(item,index,arr)
arr.forEach(function(item) {
html += `
<li>
<h3>${item.title}</h3>
<p>${item.like}</p>
</li> `
})
myUl.innerHTML = html;
</script>
</body>
</html>
结果图:
ES6新增字符串方法:
String.prototype.startsWith是否以“字符或字符串”开头
String.prototype.endsWith:是否以“字符或字符串”结尾
String.prototype.includes:判断一个字符或一串字符是否在当前字符串内
String.prototype.repeat:重复字符串
①String.prototype.includes:
let msg = "hello";
// indexof可以得到当前字符或一串字符的索引位置
console.log(msg.indexOf("h")); //结果为0
console.log(msg.indexOf("a")); //结果为-1
判断结果为负:说明字符串中没有该字符或字符串,所以,使用传统的方法需要判断结果是否为正整数
includes方法可以解决上述不足问题:
let msg = "hello";
console.log(msg.includes("h")); //结果为true
console.log(msg.includes("a")); //结果为false
includes(“查找的字符或字符串”,索引(从什么位置开始),查找的数组)
console.log(msg.includes("h", 2)); //结果为false
//从2位置开始查找字符“h”
使用ES5实现:(考虑兼容性)
<script>
// 判断浏览器是否支持includes方法
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
// 若传的start值不是数字类型
if (typeof start != "number") {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
}
}
</script>
②:String.prototype.startsWith / String.prototype.endsWith
他们也同样有两个参数,判断是否以“ ” 开头或结尾;第二个参数代表判断位置;结果为
<script>
let msg = "world";
msg.startsWith("w"); //结果为true
msg.startsWith("wor"); //结果为true
msg.startsWith("h"); //结果为false
msg.startsWith("w", 1); //结果为false,第二个参数:判断从该索引开始的字符串是否以第一个
参数开始
msg.startsWith("o", 1); //结果为true
</script>
注:String.prototype.endsWith的第二个参数:
<script>
let msg = "world";
msg.endsWith("d"); //结果为true
msg.endsWith("r"); //结果为false
msg.endsWith("r", 3); //结果为true,判断索引之前的(不包括该位)是否以第一参数结尾
</script>
③:String.prototype.repeat:
msg.repeat(3);//结果为:worldworldworld